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.
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
-
- Mensajes: 36
- Registrado: Dom Jun 11, 2006 11:43 pm
FALLA L2BIN
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.
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
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.
>
>
>
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.
>
>
>
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
FALLA L2BIN
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.
> 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
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
>> 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
-
- Mensajes: 88
- Registrado: Vie Jul 28, 2006 9:36 am
FALLA L2BIN
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
> 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
-
- Mensajes: 36
- Registrado: Dom Jun 11, 2006 11:43 pm
FALLA L2BIN
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
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
-
- Mensajes: 36
- Registrado: Dom Jun 11, 2006 11:43 pm
FALLA L2BIN
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
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
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
>
>
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
>
>