> On 10 Nov 2007, at 15:08, Felipe Monteiro de Carvalho wrote: > > > 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, > > Maybe because Filter may already have disappeared/freed by the time > the dialog is closed? (and for some reason it may still need that text > at that time)
utf8decode returns string I assume?. I think it is that tempstring that is lost. Moreover, the first piece of code assumes that length(filter)>=length(utf8toansi(filter)) I think that is ok in general, but I would assign the result of utf8toansi to a local string first, because even if a shortcut abusing temps works, that will be more comprehensive. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal