[Lazarus-es] Codificación de caracteres

Paola Bruccoleri pbruccoleri en adinet.com.uy
Jue Nov 11 16:39:53 CET 2010


El 11/11/2010 01:14 p.m., Antonio Évora escribió:
> El 11/11/10 15:57, Antonio Évora escribió:
>> El 11/11/10 15:49, Paola Bruccoleri escribió:
>>> 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
>>>
>>>
>>>
>>> _______________________________________________
>>> Lazarus-es mailing list
>>> Lazarus-es en lists.lazarus.freepascal.org
>>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>> Primeramente gracias por contestar Paola.
>>
>> Probare el MessageDlg, en cuanto a lo del SysToUTF8 lo habia leido 
>> (es más creo que era un post tuyo :D).
>>
>> Ya te cuento.
>>
>> Un saludete.
> Con el MessageDlg ocurre lo mismo, si el texto es un literal funciona 
> sin problemas, pero si el texto es pasado como parámetro de un 
> procedimiento/funcion salen los ? en vez de los acentos.
Hola Antonio...

así me funciona:

procedure TPrincipal.Aviso(Texto: string);
begin
   MessageDlg(SysToUTF8('¡¡¡ Atención...!!!'), SysToUTF8(texto), 
mtWarning, [mbOk], 0);
end;






More information about the Lazarus-es mailing list