Página 1 de 1
Erro no IF
Enviado: 29 Mai 2012 09:37
por Vandi
Bom dia,
Na rotina abaixo qualquer número que eu digito entre 0 e 9 a rotina vai sempre para a segunda opção Funcao2().
Alguém pode me dizer o que está errado nela?
Código: Selecionar todos
#include 'hwgui.ch'
Function Main
Local oDlg
Private vVar01,oVar01
Init Dialog oDlg at 200,100 size 500,300 title 'TESTANDO O <IF>'
vVar01:=0
@ 50,100 say "entre um valor qualquer: " size 220,20
@ 240,100 get oVar01 VAR vVar01 picture '9' size 20,20 Valid If(vVar01>5, {||Funcao1() }, {||Funcao2() })
oDlg:Activate()
Function Funcao1
MsgInfo('A VARIAVEL DIGITADA EH MAIOR QUE 5')
retu
Function Funcao2
MsgInfo('a variavel digitada nao eh maior que 5')
retu
Gilvandi
Erro no IF
Enviado: 29 Mai 2012 10:01
por Pablo César
Acredito que o seu erro esteja na linha 12 do seu código/exemplo.
Não deveria ser assim ?
@ 240,100 get vVar01 picture '9' size 20,20 Valid If(vVar01>5, {||Funcao1() }, {||Funcao2() })
Remova: oVar01 VAR
Erro no IF
Enviado: 29 Mai 2012 11:37
por Vandi
Pablo,
Bom dia...
Fiz como vc disse, alterei a rotina mas continua do mesmo jeito. Qualquer número digitado a rotina vai sempre para a segunda opção: Funcao2().
Gilvandi
Erro no IF
Enviado: 29 Mai 2012 11:42
por Pablo César
As suas rotinas de validação, precisam retornar um valor lógico (.T. ou .F.) porque do jeito que estão, estariam retornando valor Nil.
Só não entendi, isso é possivel em HwGUI ? get oVar01 VAR vVar01 é assim mesmo ? Pergunto porque não trabalho em HwGUI...
Erro no IF
Enviado: 29 Mai 2012 13:10
por Vandi
Pablo,
Boa tarde...
Não sei te dar maiores detalhes, pois estou começando em HwGui.
O interessante é que, colocando o IF... ENDIF, a rotina funciona perfeitamente, conforme abaixo:
Código: Selecionar todos
#include 'hwgui.ch'
Function Main
Local oDlg
Private vVar01,oVar01
Init Dialog oDlg at 200,100 size 500,300 title 'TESTANDO O '
vVar01:=0
@ 50,100 say "entre um valor qualquer: " size 220,20
@ 240,100 get oVar01 VAR vVar01 picture '9' size 20,20 Valid ({||FazTeste(vVar01) }) //If(vVar01>5, {||Funcao1() }, {||Funcao2() })
oDlg:Activate()
Function FazTeste(vVar01)
*----------------------------------
If vVar01>5
Funcao1()
Else
Funcao2()
EndIf
Function Funcao1
*----------------------------------
MsgInfo('A VARIAVEL DIGITADA EH MAIOR QUE 5')
retu
Function Funcao2
*----------------------------------
MsgInfo('a variavel digitada nao eh maior que 5')
retu
Gilvandi
Erro no IF
Enviado: 29 Mai 2012 16:14
por Vandi
Pablo,
Boa tarde...
Acontece que a mesma rotina, compilada no clipper, roda perfeitamente.
Por que será que não quer rodar xHarbour HwGui???
Código: Selecionar todos
Local vVar01:=0
@00,00 clear
set talk off
set scor off
set inte on
@00,00 to 23,79
@02,02 say 'TESTANDO O <IF>'
Do whil!LastKey()=27
@ 10, 10 say "entre um valor qualquer: "
*@ 10,100 get vVar01 picture '9' VALID IIf(vVar01>5, {||Funcao1() }, {||Funcao2() })
@ 10,100 get vVar01 picture '9' VALID IIf(vVar01>5, Funcao1(), Funcao2() )
Read
EndDo
Return
Function Funcao1
Alert('A VARIAVEL DIGITADA EH MAIOR QUE 5')
vVar01:=0
return.f.
Function Funcao2
Alert('a variavel digitada nao eh maior que 5')
vVar01:=0
return.f.
Gilvandi
Erro no IF
Enviado: 29 Mai 2012 16:50
por Pablo César
Pois é... em Clipper dá certo. Se bem que você notou de que tipo foi declarada a suas variáveis ?
Talvez na forma que é apresentada as variáveis no hwgui estão privates ou publicas... creio que a forma mais certa a nível de codificação é colocando uma função validadora, recebendo "outra" variável ou até mesmo ponteiro da variável, caso ela cnsuma muita memória (que creio que não é o caso) e tratar de dentro da função.
Erro no IF
Enviado: 29 Mai 2012 18:05
por FTrautwein
Tente com:
Código: Selecionar todos
@ 240,100 get oVar01 VAR vVar01 picture '9' size 20,20 Valid { || If( vVar01 > 5, Funcao1(), Funcao2() ) }
Fausto
Erro no IF
Enviado: 29 Mai 2012 21:23
por Vandi
Fausto,
Boa noite...
Resolvido... funcionou perfeitamente a rotina.
Muito obrigado pela sua atenção.
Gilvandi