Caracter escape Hexadecimal
Buenas a todos
Tengo un hardware que me devuelve cada 5 segundos una serie de registros (todos agrupado en una sola linea), lo estoy leyendo con un componente tcpclient y su método receiveln. Tcpclient1,receiveln(Buf,ls_fin). buf es un Pansichar y ls_fin es el caracter de escape de la cadena. Cuando trabajo con este método en decimal, le paso un CRLF (retorno de carro, #13#10) y todo va perfecto, corta las cadena por separado, cada vez que se encuentra un retorno de carro, me trata una cadena independiente y continua con la otra. El problema se trata cuando trabajo en hexadecimal. la cadena que me trae el metodo (varios registros), delphi me la pita con carateres raros Delphi me pinta esto: 'Ž'#2#$1F, pero al convertirlo a caracteres ascii, me trae lo siguiente en hexadecimal: Cita:
¿Alguien podría orientarme de como enviar la cadena de fin de registro 8F? Lo he intentado como
Gracias a todos por Vuestra colaboración. Saludos |
rabata2001,
Cita:
Cita:
1- ¿Como conviertes 'Ž'#2#$1F y obtienes la salida que indicas en Hexadecimal?, ¿'Ž'#2#$1F es la cadena completa recibida o solo una parte?. 2- ¿El proceso inverso de conversión no se podría aplicar a 8F para enviarlo como carácter separador? :confused: 3- ¿Puedes publicar el código de conversión con una cadena completa debidamente formateada (Donde empieza y donde termina cada carácter recibido para su posterior conversión a Hexadecimal)?. Espero sea útil :) Nelson. |
Muchas gracias por tu aporte, Nelson
Te adjunto el trozo de código donde descodifico la información:
Gs_P3_EOR = Finde registro (cadena o sentencia 8F) Dato:PAnsiChar ls_dato_Hex, ls_cadena:String; Entiendo que la instrucción format pasa de AnsiChar a codigo hexadecimal(%x). Ante tus preguntas formuladas Cita:
Cita:
Cita:
el envío del fin de cadena se le indica a un componente TcpClient: TcpClient1.Receiveln(ls_fin); Dónde ls_Fin (8F), es el carácter a enviar como PAnsiChar, al menos eso entiendo. Saludos. |
rabata2001,
Cita:
Cita:
Revisa este código: El código anterior, convierte la cadena de caracteres 'Ž'#2#$1F en su representación hexadecimal y muestra su contenido, el cual en este caso es el siguiente: ¿Por que la salida difiere de lo sugerido en el Msg #3?, en la cadena 'Ž'#2#$1F hay tres caracteres : 1- 'Ž' = 8E en Hex (En la cadena representado como un carácter). 2- #2 = 02 en Hex (En la cadena representado como un número decimal). 3- #$1F= 1F en Hex (En la cadena representado como un número hexadecimal). Luego no entiendo lo siguiente :confused: : Cita:
Espero sea útil :) Nelson. |
Cita:
|
La franja horaria es GMT +2. Ahora son las 18:08:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi