[Lazarus-es] Fw: Funcion para convertir de caracter a ascii

JoshyFun joshyfun en gmail.com
Vie Dic 4 21:53:37 CET 2009


Hello Ismael,

Friday, December 4, 2009, 10:26:52 PM, you wrote:

ILDGa> Ya funciona, pero de todos modos te pasa lo función para que me des tu
ILDGa> opinión de la forma más correcta:
ILDGa> function TForm1.scadena(sdato: string): string;
ILDGa> var
ILDGa>   strencript: string;
ILDGa>   intc, intlon: integer;
ILDGa> begin
ILDGa>   intc := 1;
ILDGa>   intlon := length(sdato);
ILDGa>   for intc := 1 to intlon do
ILDGa>     begin
ILDGa>       strencript := strencript +
ILDGa> IntToStr(ord(UTF8ToAnsi(AnsiMidStr(sdato, 
ILDGa> intc, 1))[1]));
ILDGa>     end;
ILDGa>   result := strencript;
ILDGa> end;

No entiendo bien que quieres obtener, ya que el resultado de esto no
parece bidireccional, esto es, no puedes obtener la cadena orginal a
partir del resultado. Para que sea rápida y efectiva yo la haría así:

function TForm1.scadena(sdato: string): string;
var
  AnsiStr,TempStr: ansistring;
  i,k,v: SizeInt;
begin
  AnsiStr:=UTF8ToAnsi(sDato);
  SetLength(Result,Length(AnsiStr)*3));
  k:=1;
  for i:= 1 to Length(AnsiStr) do begin
    v:=ord(AnsiStr[j]);
    TempStr:=IntToStr(v);
    move(TempStr[1],Result[k],Length(TempStr));
    inc(k,Length(TempStr));
  end;
  SetLength(Result,k);
end;

-- 
Best regards,
 JoshyFun





More information about the Lazarus-es mailing list