On 10 Nov 2007, at 16:23, Felipe Monteiro de Carvalho wrote:
Which I tryed to convert to:
if UnicodeEnabledOS then
SendMessage(fHandle, WM_SETTEXT, 0,
LPARAM(PWideChar(Utf8Decode(TheText))))
else
SendMessage(fHandle, WM_SETTEXT, 0,
LPARAM(PChar(Utf8ToAnsi(TheText))));
But this doesn't seam to work, and the text is shown scrambled.
You're making the same error which Marco pointed out earlier:
Utf8Decode returns a (reference counted) widestring, but you are not
assigning it to anything so it ends up in a (reusable) temp location.
As soon as the next temporary widestring has to be created, the
previous one is destroyed and the pwidechar will point to a random
memory block.
The same goes for the Utf8ToAnsi() call, except that here it is an
ansistring instead of a widestring.
Jonas
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal