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

Reply via email to