[Lazarus] TStrings, Windows and Unicode

Howard Page-Clark hdpc at talktalk.net
Wed Oct 24 08:58:57 CEST 2012


On 24/10/12 2:25, Marcos Douglas wrote:
> In the example below, running on Windows:
> The name of file, after saved, is "atenção.txt" but the content is "atenção".
> I understand the filename, i.e, I need to use UTF8ToSys but I do not
> understand the valid content.
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
>    lStrings: TStrings;
> begin
>    lStrings := TStringList.Create;
>    lStrings.Text := 'atenção';
>    lStrings.SaveToFile('c:\atenção.txt');
>    lStrings.Free;
> end;

Internally the LCL uses only UTF8 encoding, so stringlists etc. all 
expect strings in that encoding and process them correctly when supplied 
(as here) with a string from the IDE Editor which is also UTF8. However 
the streaming code in SaveToFile eventually calls some Windows system 
routine which does not handle UTF8 and so requires conversion from the 
UTF8 filename to be correctly handled.

Howard





More information about the Lazarus mailing list