Página 1 de 1

#command criando variavel

Enviado: 27 Dez 2010 17:16
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.

#command criando variavel

Enviado: 27 Dez 2010 20:01
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.

Re: #command criando variavel

Enviado: 27 Dez 2010 21:23
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.

#command criando variavel

Enviado: 27 Dez 2010 22:52
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 ?

Re: #command criando variavel

Enviado: 28 Dez 2010 13:40
por anacatacombs
Ou também colocar o comando para chamar uma função que faça esse procedimento.

Re: #command criando variavel

Enviado: 28 Dez 2010 14:06
por JoséQuintas
Consegui.
Funcionou assim:

#command MENU to <v> => If Type("<v>") != "N"; <v> := 1; End ; <v> := RatMenuTo(<v>)