Page 1 of 1

Diferencias FWH 9.03 y FWH 10.09 => msginfo( uCharToVal( ".T

Posted: Wed Oct 06, 2010 11:10 pm
by FiveWiDi
Antonio,

Por favor, podría probar este código:

msginfo( uCharToVal( ".T.", .T. ) )

En la versión de FWH 9.03 se mostraba .T. y con la versión 10.09 se muestra .F., es correcto? Debe ser así?

Gracias, me voy a dormir, mañana te leo.

Re: Diferencias FWH 9.03 y FWH 10.09 => msginfo( uCharToVal( ".T

Posted: Mon Oct 11, 2010 12:16 am
by Daniel Garcia-Gil
FiveWidi


efectivamente la funcion cambio a partir de la version 9.05
http://forums.fivetechsupport.com/viewtopic.php?p=82088#p82088

Mejorado: uCharToVal( cText, [cType] ). También se ha cambiado del módulo WQout.prg a Valblank.Prg

Si no se proporciona cType o es nulo, la función determina el tipo de dato apropiado y convierte el valor. Si el segundo parámetro es por referencia, el tipo determinado por la función se almacena en el segundo parámetro.

Re: Diferencias FWH 9.03 y FWH 10.09 => msginfo( uCharToVal( ".T

Posted: Wed Oct 13, 2010 10:17 am
by FiveWiDi
Daniel Garcia-Gil wrote:FiveWidi


efectivamente la funcion cambio a partir de la version 9.05
http://forums.fivetechsupport.com/viewtopic.php?p=82088#p82088

Mejorado: uCharToVal( cText, [cType] ). También se ha cambiado del módulo WQout.prg a Valblank.Prg

Si no se proporciona cType o es nulo, la función determina el tipo de dato apropiado y convierte el valor. Si el segundo parámetro es por referencia, el tipo determinado por la función se almacena en el segundo parámetro.


Si, si estamos de acuerdo, pero entiendo que lo que sucede es que no convierte bien el valor que recibe.
Esto seria correcto?

Local nNumero := 0
uCharToVal( "123.56", nNumero )
y que msginfo( nNumero ) mostrara por pantalla 345.89, yo creo que NO sería correcto porque está cambiando el valor recibido además de su tipo.

Entonces si:

Local lvalor := .T.
uCharToVal( ".T.", lValor )
y que MsgInfo( lValor ) mostrara por pantalla .F. tampoco sería correcto por la misma razón que el ejemplo anterior, CAMBIA SU VALOR.

Gracias.

Re: Diferencias FWH 9.03 y FWH 10.09 => msginfo( uCharToVal( ".T

Posted: Wed Oct 13, 2010 11:21 am
by Daniel Garcia-Gil
Fivewidi

porl o que leo en la descripcion de la funcion, el 2do parametro es el tipo de dato ( "N", "L", "D", "C" ) y no el valor, el uso de eseparametro puede ser omitido o usarlo en forma de referencia

los valores ".T." y ".F." no son permitidos
puedes usar para valores .T. = "T", "TRUE", "YES", "VERDADERO", "VERO", "WAHR", "VRAI", "VERDADEIRO"
para valores .F. = "F", "FALSE", "NO", "FALSO", "FALSCH", "FAUX"


esto funciona perfectamenrte

Code: Select all | Expand


#include "fivewin.ch"


function main
   local dVal := Date()
   local nVal := 12346.78
   local lVal := .T.
   local cRef
   
   ? uCharToVal( cValToChar( dVal ) ), uCharToVal( cValToChar( dVal ), "D" ), uCharToVal( cValToChar( dVal ), @cRef ), cRef
   cRef := NIL
   ? uCharToVal( cValToChar( nVal ) ), uCharToVal( cValToChar( nVal ), "N" ), uCharToVal( cValToChar( nVal ), @cRef ), cRef
   cRef := NIL
   ? uCharToVal( "TRUE" ), uCharToVal( "T", "L" ), uCharToVal( cValToChar( lVal ), @cRef ), cRef
   
RETURN NIL  
 

Re: Diferencias FWH 9.03 y FWH 10.09 => msginfo( uCharToVal( ".T

Posted: Wed Oct 13, 2010 6:55 pm
by FiveWiDi
Daniel Garcia-Gil wrote:Fivewidi

porl o que leo en la descripcion de la funcion, el 2do parametro es el tipo de dato ( "N", "L", "D", "C" ) y no el valor, el uso de eseparametro puede ser omitido o usarlo en forma de referencia

los valores ".T." y ".F." no son permitidos
puedes usar para valores .T. = "T", "TRUE", "YES", "VERDADERO", "VERO", "WAHR", "VRAI", "VERDADEIRO"
para valores .F. = "F", "FALSE", "NO", "FALSO", "FALSCH", "FAUX"


esto funciona perfectamenrte


Es cierto, funciona perfectamente, lo cual no quiere decir que haga lo que se espera de ello.

Sigo pensando que no está bien y que en la línia donde dices:
puedes usar para valores .T. = "T", "TRUE", "YES", "VERDADERO", "VERO", "WAHR", "VRAI", "VERDADEIRO"
debería decir:
puedes usar para valores .T. = ".T.", "T", "TRUE", "YES", "VERDADERO", "VERO", "WAHR", "VRAI", "VERDADEIRO"

Fíjate en esto, hasta ahora uCharToVal() era la inversa de cValToChar(), si alguien ha decidido que ya no es así, pues es cierto funciona perfectamente pero no es compatible con lo anterior.

Seguro que el impacto es mínimo, lleva varios meses así y no he visto mensajes al respecto, pero a mi modo de ver alguien se dejó ... ".T.".

Por el mismo razonamiento, cualquier día CToD() deja de ser la inversa de DToC().

Un saludo

Re: Diferencias FWH 9.03 y FWH 10.09 => msginfo( uCharToVal( ".T

Posted: Sun Oct 17, 2010 7:58 pm
by Daniel Garcia-Gil
Fivewidi

Entiendo lo que comentas

el codigo de la funcion esta en source/function/valblank.prg

puedes modificarla a tu antojo, por ejemplo añadir los valores que necesitas

Code: Select all | Expand

 
   local cTrue    := "|.T.|T|TRUE|YES|VERDADERO|VERO|WAHR|VRAI|VERDADEIRO|"
   local cFalse   := "|.F.|F|FALSE|NO|FALSO|FALSCH|FAUX|"