Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2014
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 17
rabata2001 Va por buen camino
Post

Muchas gracias por tu aporte, Nelson

Te adjunto el trozo de código donde descodifico la información:

Código Delphi [-]
      While (li_i <= Longitud) and (ls_dato_Hex <> Gs_P3_EOR) Do
      Begin
        ls_dato_Hex := format('%x',[ord(Dato[li_i])]);

        ls_hex := ls_hex + '{' + ls_dato_Hex + '} ';

        ls_Cadena_Hex := ls_Cadena_Hex + Gs_Tabulador + ls_dato_Hex;
        Inc(li_i);
      End;

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:
1- ¿Como conviertes 'Ž'#2#$1F y obtienes la salida que indicas en Hexadecimal?, ¿'Ž'#2#$1F es la cadena completa recibida o solo una parte?.
Es la cadena completa, cuando realiza la transformación (código indicado arriba), se puede observar que el contenido es más grande

Cita:
2- ¿El proceso inverso de conversión no se podría aplicar a 8F para enviarlo como carácter separador?
Eso es lo que quiero obtener. La pregunta va relacionada como paso 8F (Hexadecimal) a PAnsiChar, para que lo mande como fin de cadena.

Cita:
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)?.
Código publicado.

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.
Responder Con Cita
  #2  
Antiguo 09-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
rabata2001,

Cita:
Empezado por rabata2001
...Entiendo que la instrucción format pasa de AnsiChar a código hexadecimal(%x)...
Es correcto , en Delphi se puede convertir de Dec a Hex y viceversa de la siguiente forma:
Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 var
    Hex : String;
    Dec : Integer;
 
 begin
 
    Hex := '$8F'; // 8F en Hex = 143 en Dec
 
    // Convierte de Hex a Dec
    Dec := StrToInt(Hex);
    ShowMessage(IntToStr(Dec));
 
    // Convierte de Dec a Hex
    Hex := Format('%.2x',[Dec]);
    ShowMessage(Hex);
 
 end;
Cita:
Empezado por rabata2001
...Es la cadena completa, cuando realiza la transformación (código indicado arriba), se puede observar que el contenido es más grande...


Revisa este código:
Código Delphi [-]
 procedure TForm1.Button2Click(Sender: TObject);
 var
    i : Integer;
    Hex, HexFmt : String;
    Buffer : PAnsiChar;
 
 begin
 
    Buffer := 'Ž'#2#$1F;
 
    for i := 0 to Length(Buffer) - 1 do
    begin
       Hex := Format('%.2x',[Ord(Buffer[i])]);
       HexFmt := HexFmt + '{' + Hex + '} ';
    end;
 
    MessageDlg(HexFmt,mtInformation,[mbOK],0);
 
 end;
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 :
Cita:
Empezado por rabata2001
Delphi me pinta esto: 'Ž'#2#$1F, pero al convertirlo a caracteres ascii, me trae lo siguiente en hexadecimal:

{8E} {02} {1F} {00} {5B} {36} {00} {00} {02} {00} {01} {02} {00} {00} {07} {02} {25} {00} {0C} {01} {79} {06} {01} {00} {81} {04} {97} {12} {02} {00} {8F} {8E} {02} {1F} {00} {5B} {36} {00} {00} {02} {00} {01} {02} {00} {00} {07} {02} {25} {00} {0C} {01} {79} {06} {01} {00} {81} {04} {97} {12} {02} {00} {8F} {00}
Sin embargo siguiendo la estructura de caracteres sugerida por la cadena 'Ž'#2#$1F, el carácter delimitador 8F debe venir de la siguiente forma en la cadena recibida : #$8F, luego:
Código Delphi [-]
 procedure TForm1.Button3Click(Sender: TObject);
 var
    EOL : PAnsiChar; //String; // AnsiString;
 
 begin
    EOL := #$8F;
    TcpClient1.Receiveln(EOL);
 end;
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 09-05-2014 a las 03:44:15.
Responder Con Cita
  #3  
Antiguo 09-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.714
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por nlsgarcia Ver Mensaje
Nelson.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reemplazar carácter por otro carácter rotsen26 OOP 3 27-05-2013 11:51:38
Leer texto caracter a caracter kikecg Firebird e Interbase 11 23-11-2010 18:44:44
leer caracter por caracter, una linea de un memo douglas OOP 1 05-10-2007 07:59:31
Ayudaaaa!!! Tabla ASCII: El carácter Ñ vs. carácter ¥ Berto2003 Varios 5 26-07-2005 16:37:48
Caracter de escape para comilla JOMABRI Varios 2 09-07-2004 00:02:50


La franja horaria es GMT +2. Ahora son las 01:34:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi