Página 1 de 2

operador macro "&"

Enviado: 12 Fev 2005 09:24
por kiko
bom dia, forum...

antes te falar sobre o erro, vou explicar a maneira com que o meu sistema trabalha...

o usuario pode informar o "caminho" da base de dados do sistema. com essa variavel preenchida, eu busco os dados a partir do operador macro "&".
porem, se eu informar um caminho extenso nessa variavel, gera um erro em tempo de execuçao!

Error BASE/1513 Operation too complex: &

eu imagino que o erro seja por que o caminho é muito extenso e deve estar ocorrendo um erro em tempo de execuçao - eh obvio, rs - ...

a minha duvida é a seguinte...existe algum limite de caracteres pra colocar na variavel que vai ser substituida pelo operador macro?

bom, por enquanto é isso...ateh a proxima vez...
[z]

Enviado: 12 Fev 2005 11:48
por MARINI
Dê uma olhada no link abaixo no tópico: .code blocks

http://www.clipx.net/ng/53guide/ng110bc2.php

Operador macro &

Enviado: 12 Fev 2005 12:30
por gransoft
ARAGUARI-MG, 12 de fevereiro de 2005.

Prezado kiko,

Configuro todos os arquivos do Sistema por macros, e bem extensas. Incluo a macro entre aspas, conforme o exemplo:

PRIVATE cPath, cDrive, cArquivo

cDrive := "F:"
cPath := cDrive+"\EMPRESA\ESTOQUE\"
cArquivo := "&cPath."+"ARQEST.DBF"

USE (cArquivo)

Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br

Re: Operador macro &

Enviado: 12 Fev 2005 12:36
por Jorge Adourian
gransoft escreveu:cDrive := "F:"
cPath := cDrive+"\EMPRESA\ESTOQUE"
cArquivo := "&cPath."+"ARQEST.DBF"

USE (cArquivo)
Janis, pode me explicar porque você usa o operador macro ?

Considerando que seria muito mais simples escrever:

cArquivo := cPath+"ARQEST.DBF"

Operador macro &

Enviado: 12 Fev 2005 12:46
por gransoft
ARAGUARI-MG, 12 de fevereiro de 2005.

Prezado Jorge,

Apenas um exemplo, com duas maneiras de se fazer a mesma coisa...

Na verdade, utilizo ARRAY para configurar tudo isso, associando arquivos e indices ao respectivo ALIAS. Quando necessito, faço referência apenas ao ALIAS, e uma função abrirá todos os arquivos.

Exemplo:
https://pctoledo.org/forum/viewto ... =2290#2290

Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br

Enviado: 12 Fev 2005 12:50
por Jorge Adourian
Janis, eu conheço muito bem e não preciso de exemplos.

O que eu queria é poder entender porque alguem usar um operador numa situação em ele não é necessário.

Se puder me responder dizendo seus motivos, eu agredeceria.

Operador de macro &

Enviado: 12 Fev 2005 13:12
por gransoft
Jorge Adourian escreveu:Janis, eu conheço muito bem e não preciso de exemplos.

O que eu queria é poder entender porque alguem usar um operador numa situação em ele não é necessário.

Se puder me responder dizendo seus motivos, eu agredeceria.
ARAGUARI-MG, 12 de fevereiro de 2005.

Prezado Jorge,

Repetindo, apenas um exemplo, com duas maneiras de se fazer a mesma coisa...

Como você faz tanta questão:

MANUAL DE REFERÊNCIA CLIPPER 5.0 NANTUCKET
(ORIGINAL, que acompanha Produtos devidamente REGISTRADOS)

Página: 1-50 e 1-51
- O Operador Macro (&)
- Substituição de Texto
Onde quer que uma referência a uma macro variável delimitada como string seja encontrada, como em:

cMacro := "pessoal"
? "Alo &cMacro." // Resulta: Alo pessoal

o conteúdo da macro variável é substituído pela referência à variável.


Espero ter "justificado". Muito obrigado pela atenção.

Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br

Enviado: 12 Fev 2005 13:33
por Jorge Adourian
Janis, não recebi o que eu queria, mas agradeço assim mesmo.

Operador macro &

Enviado: 13 Fev 2005 10:33
por gransoft
Jorge Adourian escreveu:Janis, não recebi o que eu queria, mas agradeço assim mesmo.
ARAGUARI-MG, 13 de fevereiro de 2005.

Prezado Jorge,

Sinceramente não me lembro em qual versão do Clipper o comando USE passou a aceitar nomes de arquivos em variáveis, delimitados por parênteses:

xcArquivo := "ARQEST.DBF"
USE (xcArquivo)

Mas recordo que no dBase III e no FoxBase isso não era permitido, razão para o "vício de programação" ao utilizar de macro.

Estou portando meus Aplicativos Fiscais para HARBOUR/MiniGUI, e ao definir uma "Propriedade de Objeto" na IDE, devemos passá-la com a sintaxe de macro, e não somente a variável, conforme "&cModulo." no exemplo abaixo, gerado pela própria IDE:

Código: Selecionar todos

DEFINE WINDOW TEMPLATE AT 132 , 235 WIDTH 550 HEIGHT 315 TITLE "&cModulo." ICON "gransoft.ico" MODAL NOSIZE CURSOR NIL ON INIT AbreArquivos() ON RELEASE FechaArquivos() ON INTERACTIVECLOSE Nil ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ON SIZE Nil ON PAINT Nil BACKCOLOR Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil ON SCROLLUP Nil ON SCROLLDOWN Nil ON SCROLLLEFT Nil ON SCROLLRIGHT Nil ON HSCROLLBOX Nil ON VSCROLLBOX Nil
Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br

Enviado: 13 Fev 2005 11:06
por Jorge Adourian
Janis, o que queria saber APENAS POR CURIOSIDADE, é porque prefere escrever mais do que escrever menos.

Veja:

cArquivo := "&cPath."+"ARQEST.DBF" (sua linha)
cArquivo := cPath+"ARQEST.DBF" (minha linha)

São 4 teclas a mais a digitar numa única linha.

Se fosse por um vicio do DBASE seria:

USE &cArquivo
no lugar de
USE (cArquivo)

Mas a minha pergunta ainda seria a mesma, pois se refere a montagem da variavel cArquivo.

Além disto sabemos, que o operador & é um atrasador de processamento, isto é claro quando usamos em grande quantidade, que me parece ser o caso.

Se não quiser, não responda, pois é só CURIOSIDADE !

Enviado: 13 Fev 2005 11:29
por Dudu_XBase
Bom dia Senhores.
Qdo vou abrir os arquivos em outro diretório uso o comando SET DEFAULT.

http://www.clipx.net/ng/clguide/ng9f58d.php

Vou exemplificar sua utilização abaixo:

// a variável cDir_rec recebe como conteúdo diretório contas a Receber
cDir_rec := "C:\SISTEMA\RECEBE"

// Defino o diretório
SET DEFAULT TO &cDir_Rec.

// Abro os bancos vou colocar sem os indices...
USE ARQ_CONT alias contas new
USE ARQ_TIP alias tipos new

// Volta ao diretório corrente do sistema
SET DEFAULT TO

Operador macro &

Enviado: 13 Fev 2005 12:38
por gransoft
Dudu_XBase escreveu: cDir_rec := "C:\SISTEMA\RECEBE"
// Defino o diretório
SET DEFAULT TO &cDir_Rec.
ARAGUARI-MG, 13 de fevereiro de 2005.

Prezado Dudu_XBase,

Sabemos que o operador & é um atrasador de processamento...

Então, SÓ POR CURIOSIDADE, porque você usa a sintaxe:
SET DEFAULT TO &cDir_Rec.

e não
SET DEFAULT TO cDir_Rec

ou
SET DEFAULT TO C:\SISTEMA\RECEBE

Brincadeirinha... Bom Domingo a todos.

Atenciosamente,
Janis Peters Grants.

Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br

Enviado: 13 Fev 2005 12:59
por Dudu_XBase
Boa Tarde Senhores novamente...voltando da feira agora...rs..
Eu coloquei a variável para exemplificar para o kiko.
E para "concatená-la"..(será q digitei certo)....ao comando set default..precisa do operador "&" ....
o usuario pode informar o "caminho" da base de dados do sistema. com essa variavel preenchida

Enviado: 14 Fev 2005 11:30
por kiko
sim...eu tb coloco as macros entre aspas...p. ex.

cNome := "ALLAN POSSANI DA CRUZ"

? &cNome

soh que na hora de buscar os diretorios, da o erro de operaçao complexa...eu faço da seguinte forma:

CAMI := "C:\PROGRAMA\ATACADO\LOJA\DADOS\KARAPALIDA\LOJA1\"

e na hora de abrir a base de dados

USE &CAMI+"FINCLI.DBF"

e da o erro!!!

bom, por enquanto eh isso...conforme surgirem as duvidas eu volto a postar...rs...
ateh a proxima

[z]

Enviado: 14 Fev 2005 11:57
por Jorge Adourian
Kiko, afinal você resolveu seu problema ou ainda não ?