Page 1 of 1

error de la funcion Val() en numeros largos

Posted: Wed Oct 24, 2007 12:19 am
by SauroSrl
Hola amigos el foro:

Ayuda por favor, la oficina de Impuestos de Bolivia requiere que los datos de una Factura sean encriptados, previo el aƱadido de un digito verificador, por lo cual necesito hacer la siguiente operacion:

VAL("4209253717027162"+"1")

pero el resultado que me arroja la funcion Val() es:

42092537170271624

... el ultimo digito, en el valor numerico, se vuelve 4 (en vez e 1).

esto en realidad es un error de xHarbour??

estoy usando FWH26 y xharbour 0.99.3

De antemano gracias por la ayuda.
Rolando

Posted: Wed Oct 24, 2007 6:06 am
by Antonio Linares
Rolando,

Lo hemos preguntado en la lista de desarrollo de Harbour.

Falla por igual en Harbour y xHarbour. No es error de FWH, ya que Val() pertenece a ellos.

Posted: Wed Oct 24, 2007 12:37 pm
by Patricio Avalos Aguirre
Hola

En xHarbour Compiler build 0.99.71 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/

Funciona correctamente el ejemplo

Posted: Wed Oct 24, 2007 12:50 pm
by QAZWSX2K
y porque no haces VAL("4209253717027162")+val("1")

Posted: Wed Oct 24, 2007 1:57 pm
by karinha

Code: Select all


// Testing a VAL()

#Include "FiveWin.Ch"

//------------------------------------------------------------------------//

Function Main()

   LOCAL oDlg
   LOCAL cVAL := "4209253717027162"
   LOCAL oGet

   DEFINE DIALOG oDlg TITLE "Just a get"

   @ 1.5,  2 SAY "Val:" OF oDlg

   @ 2,  6 GET oGet VAR cVAL OF oDlg SIZE 80, 12  ;
           VALID ! Empty( cVAL )

   @ 3,  7 BUTTON "&Ok" OF oDlg SIZE 30, 12       ;
           ACTION ( Calcula_Val( cVAL ) )

   @ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg   ;
           ACTION ( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED

return nil

//------------------------------------------------------------------------//

/*
VAL("4209253717027162"+"1")

pero el resultado que me arroja la funcion Val() es: 

42092537170271624

Desde Clipper:  VAL(A) + VAL(B)
*/

Static Function Calcula_Val( cVAL )

    LOCAL bVal := "1"
    LOCAL A, B, nResuelta

    A :=  VAL( cVAL )
    B :=  VAL( bVAL )

    nResuelta := A + B

    ? nResuelta

Return( .T. )

//-> FIN