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

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

Postby FiveWiDi » Wed Oct 06, 2010 11:10 pm

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.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1190
Joined: Mon Oct 10, 2005 2:38 pm

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

Postby Daniel Garcia-Gil » Mon Oct 11, 2010 12:16 am

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.
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

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

Postby FiveWiDi » Wed Oct 13, 2010 10:17 am

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.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1190
Joined: Mon Oct 10, 2005 2:38 pm

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

Postby Daniel Garcia-Gil » Wed Oct 13, 2010 11:21 am

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 view  RUN

#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  
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

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

Postby FiveWiDi » Wed Oct 13, 2010 6:55 pm

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
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1190
Joined: Mon Oct 10, 2005 2:38 pm

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

Postby Daniel Garcia-Gil » Sun Oct 17, 2010 7:58 pm

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 view  RUN
 
   local cTrue    := "|.T.|T|TRUE|YES|VERDADERO|VERO|WAHR|VRAI|VERDADEIRO|"
   local cFalse   := "|.F.|F|FALSE|NO|FALSO|FALSCH|FAUX|"
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 51 guests