by russimicro » Sat May 16, 2015 8:53 pm
Antonio...
Buena tarde ...
La secuencia es esta :
1. Capturo un texto con este formato "1*1" -> un trozo de lamina de un metro --> en la variable "cCanTem"
2. el método convierteSartaValores(cCanTem,@nCanTar,nUniMed,oDlgBr1,oBotAce,@lEstFun,@nPreAdi) , recibe la variable : cCanTem, como una sarta, la convierte en numérica y la regresa como numerica en la varibale @nCanTar ( asi nCanTar := VAL(1)*VAL(1) / 32 (valor final para este ejemplo)
3. El valor de retorno en nCanTar, es el que evaluó ---> ALERT(nCanTar) // 0.031000
/// resumen del código
@ 15,70 GET oCanTem VAR cCanTem OF oDlgBr1 ; // cCanTem := "1*1"
PICTURE "XXXXXXXXXXXXXXXX" ;
PIXEL SIZE 120,25 ;
UPDATE ;
COLOR CLR_WHITE,CLR_GREEN FONT M->oFonAc8 ;
VALID ( convierteSartaValores(cCanTem,@nCanTar,nUniMed,oDlgBr1,oBotAce,@lEstFun,@nPreAdi) )
ACTIVATE DIALOG oDlgBr1 CENTER ON INIT ( oCanTem:SetFocus() )
// VALORES RETORNADOS
ALERT(nCanTar) // 0.031000
convierteSartaValores(cCanTem,@nCanTar,nUniMed,oDlgBr1,oBotAce,@lEstFun,@nPreAdi)
ALERT(nCanTar) // 0.031250
Nota : Antonio como puede notar en el código inicial invoco la función convierteSartaValores(), desde el get y directamente y retorna estos valores : 0.031000 y 0.031250 respectivamente.
Nota: La variable que debe almacenar el valor final es nCanTar , que a su vez llega como parámetro a la función :
FUNCTION capturaValorTexto(nCanTar,nUniMed,nPreAdi), ahora si declaro la variable nCanTar como local en este método el valor retornado por ambas invocaciones es igual (0.031250 ) => división de 1 / 32 , con set decimals to 6
Johnson Russi