[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