[Lazarus] TProcess, UTF8, Windows
Marcos Douglas
md at delfire.net
Sat Apr 14 15:39:17 CEST 2012
On Sat, Apr 14, 2012 at 6:36 AM, Sven Barth <pascaldragon at googlemail.com> wrote:
> On 14.04.2012 07:20, Martin Schreiber wrote:
>>
>> On Friday 13 April 2012 20:32:23 Marcos Douglas wrote:
>>>
>>> On Fri, Apr 13, 2012 at 2:59 PM, Martin Schreiber<mse00000 at gmail.com>
>>
>> wrote:
>>>>
>>>> On Friday 13 April 2012 18:51:42 Michael Van Canneyt wrote:
>>>>>
>>>>> Also:
>>>>> Lazarus happened to choose UTF-8 as the encoding of their LCL.
>>>>> By contrast, MSEGui chose UTF-16 as it's encoding.
>>>>
>>>>
>>>> In order to differentiate from other string types and encodings MSEgui
>>>> uses "msestring" in properties, variables and parameters. msestring is
>>>> defined as
>>>> "
>>>> type
>>>> msestring = UnicodeString;
>>>> "
>>>
>>>
>>> But even so, we still can pass AnsiString<UTF8String, string,
>>> whatever> to a function:
>>>
>>> type
>>> MyString = UnicodeString;
>>>
>>> procedure Foo(const s: MyString);
>>> begin
>>> ShowMessage(s);
>>> end;
>>>
>>> procedure TForm1.Button1Click(Sender: TObject);
>>> var
>>> s: AnsiString;
>>> begin
>>> s := 'hi';
>>> Foo(s);
>>> end;
>>>
>> Yes. And if "s" is not in utf-8 but in current system encoding it even
>> will be
>> translated correctly in FPC 2.6.0. ;-)
>
>
> In that case it will also be translated correctly in 2.7.1. It will also be
> translated correctly if the AnsiString is defined as "AnsiString(CP_UTF8)"
> and has an UTF-8 encoded string in it.
I did understand.
I coded a console app (just FPC) on Windows:
program Project1;
{$mode objfpc}{$H+}
uses
Classes, SysUtils;
var
fname: UnicodeString;
list: TStringList;
begin
fname := 'c:\á b ç\á.txt';
list := TStringList.Create;
try
list.LoadFromFile(fname);
writeln(list.Text);
finally
list.Free;
end;
end.
Should work? Here not worked...
Marcos Douglas
More information about the Lazarus
mailing list