In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

FALLA L2BIN

Foro público de Xailer en español
Responder
Roque Lopez
Mensajes: 36
Registrado: Dom Jun 11, 2006 11:43 pm

FALLA L2BIN

Mensaje 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.
Xavi[1]
Mensajes: 55
Registrado: Mar Jul 18, 2006 2:02 pm

FALLA L2BIN

Mensaje 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.
>
>
>
Xavi[1]
Mensajes: 55
Registrado: Mar Jul 18, 2006 2:02 pm

FALLA L2BIN

Mensaje por Xavi[1] »

Carlos Mora
Mensajes: 88
Registrado: Vie Jul 28, 2006 9:36 am

FALLA L2BIN

Mensaje 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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

FALLA L2BIN

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Carlos Mora
Mensajes: 88
Registrado: Vie Jul 28, 2006 9:36 am

FALLA L2BIN

Mensaje 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
Roque Lopez
Mensajes: 36
Registrado: Dom Jun 11, 2006 11:43 pm

FALLA L2BIN

Mensaje 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
Roque Lopez
Mensajes: 36
Registrado: Dom Jun 11, 2006 11:43 pm

FALLA L2BIN

Mensaje 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
Xavi[1]
Mensajes: 55
Registrado: Mar Jul 18, 2006 2:02 pm

FALLA L2BIN

Mensaje 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
>
>
Responder