operador macro "&"
Moderador: Moderadores
operador macro "&"
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]
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]
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Operador macro &
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
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
-
Jorge Adourian
- Usuário Nível 2

- Mensagens: 95
- Registrado em: 05 Jul 2004 23:38
- Localização: São Paulo-SP-Brasil
- Contato:
Re: Operador macro &
Janis, pode me explicar porque você usa o operador macro ?gransoft escreveu:cDrive := "F:"
cPath := cDrive+"\EMPRESA\ESTOQUE"
cArquivo := "&cPath."+"ARQEST.DBF"
USE (cArquivo)
Considerando que seria muito mais simples escrever:
cArquivo := cPath+"ARQEST.DBF"
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Operador macro &
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
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
Editado pela última vez por gransoft em 12 Fev 2005 14:10, em um total de 1 vez.
-
Jorge Adourian
- Usuário Nível 2

- Mensagens: 95
- Registrado em: 05 Jul 2004 23:38
- Localização: São Paulo-SP-Brasil
- Contato:
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.
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.
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Operador de macro &
ARAGUARI-MG, 12 de fevereiro de 2005.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.
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
Editado pela última vez por gransoft em 12 Fev 2005 14:10, em um total de 1 vez.
-
Jorge Adourian
- Usuário Nível 2

- Mensagens: 95
- Registrado em: 05 Jul 2004 23:38
- Localização: São Paulo-SP-Brasil
- Contato:
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Operador macro &
ARAGUARI-MG, 13 de fevereiro de 2005.Jorge Adourian escreveu:Janis, não recebi o que eu queria, mas agradeço assim mesmo.
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
Janis Peters Grants.
Skype: gransoft
http://www.gransoft.com.br
gransoft@zipmail.com.br
-
Jorge Adourian
- Usuário Nível 2

- Mensagens: 95
- Registrado em: 05 Jul 2004 23:38
- Localização: São Paulo-SP-Brasil
- Contato:
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 !
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 !
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
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
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
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Operador macro &
ARAGUARI-MG, 13 de fevereiro de 2005.Dudu_XBase escreveu: cDir_rec := "C:\SISTEMA\RECEBE"
// Defino o diretório
SET DEFAULT TO &cDir_Rec.
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
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
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 "&" ....
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
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
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]
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]
-
Jorge Adourian
- Usuário Nível 2

- Mensagens: 95
- Registrado em: 05 Jul 2004 23:38
- Localização: São Paulo-SP-Brasil
- Contato: