[fpc-pascal] Help making code unicode capable

Felipe Monteiro de Carvalho felipemonteiro.carvalho at gmail.com
Sat Nov 10 15:08:50 CET 2007


I have a small piece of code on LCL which I have found hard to convert
to unicode:

      lpStrFilter := StrAlloc(Length(Filter)+1);
      StrPCopy(lpStrFilter, Filter);

on win32wsdialogs.pp

lpStrFilter is a member on the LPOPENFILENAME winapi structure.

Having a win9x version is trivial, but having a version where we put a
PWideChar into lpStrFilter looks hard...

      lpStrFilter := StrAlloc(Length(Filter)+1);
      StrPCopy(lpStrFilter, Utf8ToAnsi(Filter));

I tryed this as unicode version:

      lpStrFilter := PChar(PWideChar(Utf8Decode(Filter)));

But it crashes the dialog when it is closed... I don't know what
exactly is happening here, or why the original code manually alocated
memory and then copyed the string, instead of just copying, so I'm
lost about solving this.

Felipe Monteiro de Carvalho

More information about the fpc-pascal mailing list