Comandant,
Revisa estos comentarios en el siguiente link:
http://delphi.jmrds.com/?q=node/43
Cita:
Estoy teniendo algunos problemas al usar el sistema de CryptBinaryToString en Delphi 2010, no se si el problema vendrá ocasionado
por el nuevo IDE. ¿Podrías informarme de si tienes algún tipo de información en este tipo de sistema?
Gracias por anticipado.
Saludos.
Víctor.
|
Cita:
Esa versión de Delphi utiliza caracteres unicode por defecto, así que el tamaño en bytes de los caracteres es diferente.
No tengo Delphi 2010 para probarlo pero prueba a cambiar el tipo String por AnsiString y PChar por PAnsiChar.
Con eso debería funcionar, pruebalo y nos lo cuentas.
|
Revisa estos comentarios en el siguiente link:
http://delphi.jmrds.com/?q=node/83
Cita:
Excelente artículo!!!
sin embargo me quedo con la duda de cómo funciona para strings unicode?
Un saludo seoane, desde el otro lado del charco
|
Código Delphi
[-]
Pues no te quedes con la duda jachguate, funciona perfectamente.
Solamente hay que saber como utilizar las funciones, por ejemplo:
procedure TestWideStrings;
var
l: Integer;
Str: WideString;
P: PWideChar;
begin
Str:= '这样还经营';
MessageBoxW(0,PWideChar('Texto original: ' + Str),'Test',
MB_OK or MB_SETFOREGROUND or MB_TASKMODAL);
Str:= BinToStr(PByteArray(PWideChar(Str)),Length(Str)*Sizeof(WideChar));
MessageBoxW(0,PWideChar('Texto codificado: ' + Str),'Test',
MB_OK or MB_SETFOREGROUND or MB_TASKMODAL);
P:= PWideChar(StrToBin(Str,l));
try
Str:= Copy(P,1,l div Sizeof(WideChar));
finally
FreeMem(P);
end;
MessageBoxW(0,PWideChar('Texto reconstruido: ' + Str),'Test',
MB_OK or MB_SETFOREGROUND or MB_TASKMODAL);
end;
En el ejemplo tenemos un texto en chino que guardamos en un WideString.
Para codificarlo no hay mas que pasar su puntero a la función BinToStr, pero teniendo en cuenta
que su tamaño en bytes es el doble que su tamaño en caracteres. Y decodificarlo es todavía mas fácil,
ya que el parámetro "Str" que le pasamos a la función StrToBin es del tipo AnsiString por lo que
delphi ya hace la conversión por nosotros.
Como ves tanto a la hora de codificar como decodificar no hay problemas con las strings Unicode
Saludos
Espero sea útil
Nelson.