operador macro "&"

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
kiko
Usuário Nível 3
Usuário Nível 3
Mensagens: 145
Registrado em: 08 Jul 2004 15:24
Localização: Cianorte

operador macro "&"

Mensagem 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]
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Mensagem por MARINI »

Dê uma olhada no link abaixo no tópico: .code blocks

http://www.clipx.net/ng/53guide/ng110bc2.php
Sds
Marini
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Operador macro &

Mensagem 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
Jorge Adourian
Usuário Nível 2
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 &

Mensagem 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"
Até...
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
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Operador macro &

Mensagem 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
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
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem 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.
Até...
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
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Operador de macro &

Mensagem 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
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
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem por Jorge Adourian »

Janis, não recebi o que eu queria, mas agradeço assim mesmo.
Até...
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
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Operador macro &

Mensagem 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
Jorge Adourian
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem 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 !
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem 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


________________________________________________________________________________________________________
(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
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Operador macro &

Mensagem 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
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem 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


________________________________________________________________________________________________________
(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




Avatar do usuário
kiko
Usuário Nível 3
Usuário Nível 3
Mensagens: 145
Registrado em: 08 Jul 2004 15:24
Localização: Cianorte

Mensagem 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]
Jorge Adourian
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem por Jorge Adourian »

Kiko, afinal você resolveu seu problema ou ainda não ?
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
Responder