[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