[Lazarus-es] Codificación de caracteres

Paola Bruccoleri pbruccoleri en adinet.com.uy
Jue Nov 11 15:49:51 CET 2010


El 11/11/2010 12:26 p.m., Antonio Évora escribió:
> Hola compañeros,
> Estoy sufriendo una paranoia con el tema de los acentos. Según he 
> leído desde la versión 0.9.25 de lazarus todo está codificado con UTF8 
> (tengo la 0.9.28) sobre SO Windows XP.
>
> Bueno tengo el siguiente procedimiento:
>
> procedure Aviso(Texto: string);
> begin
>     Application.MessageBox(pchar(Texto),'Aviso',64);
> end;
>
> Y lo llamo con:
>
> Aviso('Los parámetros han sido actualizados con éxito');
>
> Al mostrar el mensaje los caracteres acentuados son sustituidos por ?.
>
> Pensando que pudiera ser por el tipo del parámetro lo cambie por 
> UTF8String con el mismo resultado. Examinando el valor del parámetro una
> vez pasado siempre va codificado en Ansi independientemente del tipo.
>
> Cambiando la instrucción del procedimiento por:
>
> Application.MessageBox(pchar(AnsiToUtf8(Texto)),'Aviso',64);
>
> Funciona OK.
>
> ¿Como puedo trabajar para evitar el tener que andar convirtiendo entre 
> tipos de datos?
Hola Antonio...

es mejor usar MessageDlg. Yo uso esto y se ven perfectamente los 
caracteres acentuados; te pego un ejemplo donde lo uso:

            MessageDlg('¡¡¡ Atención...!!!', 'Número de comprobante ya 
ingresado', mtWarning, [mbOk], 0);

quizás tb te sirva el ShowMessage..


Otra cosa que te puede servir es el SysToUTF8. Ejemplos:
   cSystemVersion        := SysToUTF8('Versión: ') + GetAppVersion;

aquí, si no usaba esa función, me aparecía mi?ercoles
   pnlBotom.Caption      :=SysToUTF8(FormatDateTime('dddddd tt', now));


chauuuuuuuu






More information about the Lazarus-es mailing list