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

JoshyFun joshyfun en gmail.com
Vie Dic 4 19:58:40 CET 2009


Hello Ismael,

Friday, December 4, 2009, 6:19:02 PM, you wrote:

ILDGa> Si eso era lo que necesitaba (UTF8ToAnsi), pero sigo ahora con otro
ILDGa> problema.
ILDGa> i := ord(UTF8ToAnsi(AnsiMidStr('text1', 1, 1)));
ILDGa> unit1.pas(39,8) Error: Ordinal expression expected

UTF8ToAnsi devuelve una string, una string puede tener más de 1
caracter, por lo tanto "ord" no puede actuar sobre él, tendrás que
decirle que quieres acceder al primer carácter:

i := ord(UTF8ToAnsi(AnsiMidStr('text1', 1, 1))   [1]   );

No se que es lo que pretendes conseguir, pero me parece que te estás
liando un poco para obtener tu objetivo. Otra forma de escribir eso
sería (siempre que uses una variable, no 'text1'):

if Length(MiStr)>0 then begin
  i := ord(MiStr[1]);
end;

Si MiStr la has asignado antes:

MiStr := UTF8ToAnsi('Hola áéíóóuñÑ');
if Length(MiStr)>0 then begin
  i := ord(MiStr[1]);
end;

Si MiStr la has asignado desde un componente visual tipo Edit:

MiStr := UTF8ToAnsi(Edit1.Text);
if Length(MiStr)>0 then begin
  i := ord(MiStr[1]);
end;

El "if Length(MIStr)>0" es necesario ya que si la cadena es '' el
acceso al primer caracter daría un SIGSEGV; ejemplo:

MiStr:='';
i := odr(MiStr[1]);

-- 
Best regards,
 JoshyFun





More information about the Lazarus-es mailing list