On Wed, Oct 24, 2012 at 7:39 AM, Marc Weustink <[email protected]> wrote:
> Howard Page-Clark wrote:
>>
>> 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
>
>
> Nope.
> A stringlist is not LCL and it does not expect anything but strings.

I agree...

> If you write the contents of a stringlist to a file you get bytes you have
> put into the list. Nothing more nothing less.

Yes, but...

> If you want a UTF8 text file written, make sure you put UTF8 in it.
> Same for reading.
> When using filenames, you need to convert the name using the LCL function
> LCLtoSys (or something like that)

...in my example I didn't do that and worked, why?

For me, the same example should be written like that:

procedure TForm1.Button1Click(Sender: TObject);
var
  lStrings: TStrings;
begin
  lStrings := TStringList.Create;
  lStrings.Text := UTF8ToSys('atenção');
  lStrings.SaveToFile(UTF8ToSys('c:\atenção.txt'));
  lStrings.Free;
end;

But, as I said, I have not used the UTF8ToSys function in contents of
strings, so this be should broken, right?

BTW, I'm using FPC 2.6.1 and Lazarus trunk on Windows.

Marcos Douglas

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to