[Lazarus] TProcess, UTF8, Windows
Sven Barth
pascaldragon at googlemail.com
Sat Apr 14 11:52:46 CEST 2012
On 14.04.2012 11:39, Jürgen Hestermann wrote:
> Sven Barth schrieb:
> >> String is generic so it can be pchar, shortstring or ansistring or ....
> > Please note that String can NEVER be PChar (though there is
> assignment compatibility between the two to some extent). The possible
> types for String are ShortString, AnsiString and maybe in the future
> (and in Delphi 2009+) UnicodeString.
>
> So what? Can it NEVER be PChar or just SOMETIMES?
> A small test program
> ----------------
> procedure XTest(X : String);
> begin
> X := 'AA';
> end;
>
> var S : String;
> P : pchar;
>
> begin
> P := 'TEST';
> S := P;
> XTest(P);
> end.
> ----------------
> compiles without errors
There is a difference between "String" being a "PChar" and having
internal type conversions between "String" and "PChar". The former is
never the case while the second one is true.
"String" is defined as either being "AnsiString", "ShortString" or
"UnicodeString" depending on the used compiler and settings.
Then again "PChar" is assignment compatible to "AnsiString",
"ShortString" and "UnicodeString" and thus also to "String", as "String"
is one of those three types. This does not mean though that "String" is
a "PChar".
Regards,
Sven
More information about the Lazarus
mailing list