#command criando variavel

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

#command criando variavel

Mensagem por JoséQuintas »

Utilizo uma rotina com mouse para menus, no lugar do prompt.
Mas peguei um sistema grande de terceiros, e não deu certo como eu queria.

isto não funciona:
#command MENU TO <v> => <v> := RatMenuTo(<v>)

isto não funciona:
#command MENU to <v> => <v> := iif(<v>==NIL,1,<v>); <v> := RatMenuTo(<v>)

Isto funciona:
#command MENU to <v> => <v> := 1 ; <v> := RatMenuTo(<v>)

Na função tem lá if variavel==NIL, para o caso de não existir.
mas dá erro de variável inexistente em run-time.

No estilo 1 deu erro e no estilo 2 também.
O estilo 3 funciona, mas sempre reseta a variável para 1, perdendo o default caso a variável já exista.
Alguma sugestão?

Obs. Há milhares de "MENU TO" dentro dos fontes, e criar variável em cada local por enquanto não seria viável.
Por enquanto deixei no modo 3, sempre resetando pra 1.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

#command criando variavel

Mensagem por Pablo César »

José verifique antes se a variável existe. Para isso Maligno neste tópico deu uma solução: https://pctoledo.org/forum/viewto ... 308#p24308
Talvez dê para implentar no seu #command, nos diga se deu certo.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Re: #command criando variavel

Mensagem por JoséQuintas »

Tentei igual a declaração do default, com if/end, mas também não foi.

#xcommand DEFAULT <v1> TO <x1> [, <vn> TO <xn> ] ;
=> ;
IF <v1> == NIL ; <v1> := <x1> ; END ;
[; IF <vn> == NIL ; <vn> := <xn> ; END ]

Olhei via ppo, e a substituição está sendo feita, só não funcionou.
Muito esquisito.
As próximas tentativas vão ser usando ValType() ou Type().
Por enquanto continua daquele jeito, com o default 1, mas funcionando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

#command criando variavel

Mensagem por Pablo César »

Ahh não está aceitando condicional na diretiva do #command... E se tentar utilizar #ifDef podendo até usar valtype="U" para fazer o #command de forma diferenciada ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: #command criando variavel

Mensagem por anacatacombs »

Ou também colocar o comando para chamar uma função que faça esse procedimento.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Re: #command criando variavel

Mensagem por JoséQuintas »

Consegui.
Funcionou assim:

#command MENU to <v> => If Type("<v>") != "N"; <v> := 1; End ; <v> := RatMenuTo(<v>)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder