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

Ismael L. Donis Garc?a ismael en citricos.co.cu
Lun Dic 7 16:41:58 CET 2009


El cuadrito no da siempre, prueba con una letra acentuada sola como dato

Saludos reiterados
=========
¦¦ ISMAEL ¦¦
=========
----- Mensaje original ----- 
De: "JoshyFun" <joshyfun en gmail.com>
Para: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Enviado: viernes, 04 de diciembre de 2009 02:53
Asunto: Re: [Lazarus-es] Fw: Funcion para convertir de caracter a ascii


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


_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es






More information about the Lazarus-es mailing list