Página 1 de 1

FALLA L2BIN

Publicado: Lun Ene 08, 2007 9:48 am
por Roque Lopez
SALUDOS AMIGOS:
TENGON UN PROBLEMA CON L2BIN.
CON ALGUNOS VALORES ME ENTREGA NULO:
TENGO UN CONTADOR, PARA CORRELATIVOS EN ARCHIVO PLANO. Y LA CONVERSION
CUANDO LLEGA A ALGUNOS DATOS ES DESASTORZA.
POR EJEMPLO: 88576 ME ENTREGA NULO.
HE BAJADO EL HARBOUR DEL LINK XAILER.
AGRADECERE LA AYUDA.

FALLA L2BIN

Publicado: Lun Ene 08, 2007 2:42 pm
por Xavi[1]
Es correcto.-
L2BIN() devuelve un Buffer de memoria con la conversión BINARIA a 32 bit del dato tipo Numérico.
Los "caracteres" del Buffer, ahora bytes, pueden ser 0, NULL.
Local cBinaryInteger, c
cBinaryInteger := L2BIN( 88576 )
MsgInfo( StringtoHex(cBinaryInteger) )
for each c in cBinaryInteger
LogDebug( Asc(c) )
next
MsgInfo( BIN2L(cBinaryInteger) )
Un saludo
Xavi
Roque Lopez escribió:
> SALUDOS AMIGOS:
>
> TENGON UN PROBLEMA CON L2BIN.
>
> CON ALGUNOS VALORES ME ENTREGA NULO:
>
> TENGO UN CONTADOR, PARA CORRELATIVOS EN ARCHIVO PLANO. Y LA CONVERSION
> CUANDO LLEGA A ALGUNOS DATOS ES DESASTORZA.
>
> POR EJEMPLO: 88576 ME ENTREGA NULO.
> HE BAJADO EL HARBOUR DEL LINK XAILER.
>
> AGRADECERE LA AYUDA.
>
>
>

FALLA L2BIN

Publicado: Mar Ene 09, 2007 5:15 pm
por Xavi[1]

FALLA L2BIN

Publicado: Mié Ene 10, 2007 9:36 am
por Carlos Mora
Roque,
> TENGON UN PROBLEMA CON L2BIN.
De la documentación de Clipper:
L2BIN() returns a four-byte character string formatted as a 32-bit
binary integer.
>
> CON ALGUNOS VALORES ME ENTREGA NULO:
>
> POR EJEMPLO: 88576 ME ENTREGA NULO.
88576 es un valor que no se puede representar con enteros de 32 bits.
Probablemente ese sea el problema.
Saludos,
Carlos.

FALLA L2BIN

Publicado: Mié Ene 10, 2007 9:46 am
por jfgimenez
Carlos,
>> POR EJEMPLO: 88576 ME ENTREGA NULO.
>
> 88576 es un valor que no se puede representar con enteros de 32 bits.
> Probablemente ese sea el problema.
No, me temo que te has confundido. No se puede representar en 16 bits, pero
sí en 32 bits.
Su valor en hexadecimal es 00015A00, y por lo tanto, el primer caracter de
la cadena resultante es un nulo. Vamos, aclarándolo aún más, la cadena
resultante es exactamente chr(0)+chr(1)+chr(90)+chr(0)
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

FALLA L2BIN

Publicado: Mié Ene 10, 2007 3:27 pm
por Carlos Mora
Jose F. Gimenez escribió:
> Carlos,
>
>>> POR EJEMPLO: 88576 ME ENTREGA NULO.
>> 88576 es un valor que no se puede representar con enteros de 32 bits.
>> Probablemente ese sea el problema.
>
> No, me temo que te has confundido. No se puede representar en 16 bits, pero
> sí­ en 32 bits.
>
> Su valor en hexadecimal es 00015A00, y por lo tanto, el primer caracter de
> la cadena resultante es un nulo. Vamos, aclarándolo aún más, la cadena
> resultante es exactamente chr(0)+chr(1)+chr(90)+chr(0)
>
Cierto, me confundí­ con los 16 bits de i2bin(). Pero no hay problema pq
siempre hay alguien atento más vispao que uno ;)
Saludos,
Carlos

FALLA L2BIN

Publicado: Vie Ene 12, 2007 11:01 pm
por Roque Lopez
Bueno muchachos muchas gracias.
Sin embargo, el problema es el siguiente:
He diseñado un punto de venta con todas las caracteristicas q este implica,
pero la numeración correlativa y algunos datos mas, se guardan en un archivo
plano. Los numeros correlativos de los documentos, tickets, facturas, notas
de credito se almacenan con L2BIN, sin embargo el algunos casos el valor
retorna a 0. Como el numero q indique es solo un ejemplo. Ahora la ayuda q
les pido es si hay alguna manera de evitar esto, usando por supuesto la
misma función.
He leido lo q menciona Jose f. Gimenez y parece que la cosa va por ese lado.
Le agradecer´cualquier solución o informacion al rspecto.
Saludos
Roque López
"Carlos Mora" <carlos.mora@atisa.es> escribió en el mensaje
news:[email=45a4f7e0@news.xailer.com...]45a4f7e0@news.xailer.com...[/email]
> Jose F. Gimenez escribió:
>> Carlos,
>>
>>>> POR EJEMPLO: 88576 ME ENTREGA NULO.
>>> 88576 es un valor que no se puede representar con enteros de 32 bits.
>>> Probablemente ese sea el problema.
>>
>> No, me temo que te has confundido. No se puede representar en 16 bits,
>> pero sí en 32 bits.
>>
>> Su valor en hexadecimal es 00015A00, y por lo tanto, el primer caracter
>> de la cadena resultante es un nulo. Vamos, aclarándolo aún más, la cadena
>> resultante es exactamente chr(0)+chr(1)+chr(90)+chr(0)
>>
> Cierto, me confundí con los 16 bits de i2bin(). Pero no hay problema pq
> siempre hay alguien atento más vispao que uno ;)
>
> Saludos,
>
> Carlos

FALLA L2BIN

Publicado: Sab Ene 13, 2007 12:48 am
por Roque Lopez
Amigos:
Al parecer el problema esta en la forma.
El problema radicaba en la forma como tomaba el dato del archivo::
usaba : cBuffer:= freadstr(hHandle,4)
trataba el dato como un character, y la función freadstr se trunca cuandio
encuebrea chr(0)
Asi queda: cBufert := fread(hHandle, @cByffer, 4)
y quedo solucionado el asunto,,,}
Muchas Gracias..
Roque Lopez
"Carlos Mora" <carlos.mora@atisa.es> escribió en el mensaje
news:[email=45a4f7e0@news.xailer.com...]45a4f7e0@news.xailer.com...[/email]
> Jose F. Gimenez escribió:
>> Carlos,
>>
>>>> POR EJEMPLO: 88576 ME ENTREGA NULO.
>>> 88576 es un valor que no se puede representar con enteros de 32 bits.
>>> Probablemente ese sea el problema.
>>
>> No, me temo que te has confundido. No se puede representar en 16 bits,
>> pero sí en 32 bits.
>>
>> Su valor en hexadecimal es 00015A00, y por lo tanto, el primer caracter
>> de la cadena resultante es un nulo. Vamos, aclarándolo aún más, la cadena
>> resultante es exactamente chr(0)+chr(1)+chr(90)+chr(0)
>>
> Cierto, me confundí con los 16 bits de i2bin(). Pero no hay problema pq
> siempre hay alguien atento más vispao que uno ;)
>
> Saludos,
>
> Carlos

FALLA L2BIN

Publicado: Sab Ene 13, 2007 3:33 am
por Xavi[1]
Ya, pero resulta que fread() devuelve el número de bytes leí­dos.
Con lo cual la cosa quedarí­a así­.-
if( 4 != fread(hHandle, @cBuffer, 4) )
MsgAlert( "Error Leyendo el Fichero." )
endif
Te recomiendo que te leas el último post de: [Boton "Cancelar" en OnExit].
Un saludo
Xavi
Roque Lopez escribió:
> Amigos:
>
> Al parecer el problema esta en la forma.
>
> El problema radicaba en la forma como tomaba el dato del archivo::
> usaba : cBuffer:= freadstr(hHandle,4)
>
> trataba el dato como un character, y la función freadstr se trunca cuandio
> encuebrea chr(0)
>
> Asi queda: cBufert := fread(hHandle, @cByffer, 4)
>
>
> y quedo solucionado el asunto,,,}
>
>
> Muchas Gracias..
>
>
> Roque Lopez
>
>
> "Carlos Mora" <carlos.mora@atisa.es> escribió en el mensaje
> news:[email=45a4f7e0@news.xailer.com...]45a4f7e0@news.xailer.com...[/email]
>> Jose F. Gimenez escribió:
>>> Carlos,
>>>
>>>>> POR EJEMPLO: 88576 ME ENTREGA NULO.
>>>> 88576 es un valor que no se puede representar con enteros de 32 bits.
>>>> Probablemente ese sea el problema.
>>> No, me temo que te has confundido. No se puede representar en 16 bits,
>>> pero sí­ en 32 bits.
>>>
>>> Su valor en hexadecimal es 00015A00, y por lo tanto, el primer caracter
>>> de la cadena resultante es un nulo. Vamos, aclarándolo aún más, la cadena
>>> resultante es exactamente chr(0)+chr(1)+chr(90)+chr(0)
>>>
>> Cierto, me confundí­ con los 16 bits de i2bin(). Pero no hay problema pq
>> siempre hay alguien atento más vispao que uno ;)
>>
>> Saludos,
>>
>> Carlos
>
>