Hello,
I tested the program listed below in "Delphi 10.1 Berlin" with the
results shown in the comments.
PK
program Project3;
{$APPTYPE CONSOLE}
{$R *.res}
var
AnsiStrA: AnsiString;
ResultA: AnsiString;
begin
Writeln('Not Initialized');
Writeln(' AnsiStrA: ', StringCodePage(AnsiStrA)); // 1250
Writeln(' ResultA: ', StringCodePage(ResultA)); // 1250
Writeln;
Writeln('AnsiStrA := '' ''');
AnsiStrA := ' ';
Writeln(' AnsiStrA: ', StringCodePage(AnsiStrA)); // 1250
Writeln;
Writeln('AnsiStrA[1] := #243; // o acute win-1252');
AnsiStrA[1] := #243; // o acute win-1252
Writeln(' AnsiStrA: ', StringCodePage(AnsiStrA)); // 1250
Writeln;
Writeln('ResultA := AnsiStrA');
ResultA := AnsiStrA;
Writeln(' ResultA: ', StringCodePage(ResultA)); // 1250
Writeln;
Writeln('ResultA := AnsiStrA + '' ''');
ResultA := AnsiStrA + ' ';
Writeln(' ResultA: ', StringCodePage(ResultA)); // 1250
Writeln;
Writeln('ResultA := AnsiToUtf8(AnsiStrA);');
ResultA := AnsiToUtf8(AnsiStrA);
Writeln(' ResultA: ', StringCodePage(ResultA)); // 65001
Writeln;
Writeln('ResultA := AnsiToUtf8(AnsiStrA) + AnsiToUtf8(AnsiStrA);');
ResultA := AnsiToUtf8(AnsiStrA) + AnsiToUtf8(AnsiStrA);
Writeln(' ResultA: ', StringCodePage(ResultA)); // 65001
Writeln;
Writeln('ResultA := AnsiToUtf8(AnsiStrA) + AnsiStrA;');
ResultA := AnsiToUtf8(AnsiStrA) + AnsiStrA;
Writeln(' ResultA: ', StringCodePage(ResultA)); // 65001
Writeln;
Writeln('ResultA := AnsiStrA + AnsiToUtf8(AnsiStrA);');
ResultA := AnsiStrA + AnsiToUtf8(AnsiStrA);
Writeln(' ResultA: ', StringCodePage(ResultA)); // 1250
Readln;
end.
(*
Not Initialized
AnsiStrA: 1250
ResultA: 1250
AnsiStrA := ' '
AnsiStrA: 1250
AnsiStrA[1] := #243; // o acute win-1252
AnsiStrA: 1250
ResultA := AnsiStrA
ResultA: 1250
ResultA := AnsiStrA + ' '
ResultA: 1250
ResultA := AnsiToUtf8(AnsiStrA);
ResultA: 65001
ResultA := AnsiToUtf8(AnsiStrA) + AnsiToUtf8(AnsiStrA);
ResultA: 65001
ResultA := AnsiToUtf8(AnsiStrA) + AnsiStrA;
ResultA: 65001
ResultA := AnsiStrA + AnsiToUtf8(AnsiStrA);
ResultA: 1250
*)
------ Původní zpráva ------
Od: "Bart" <bartjun...@gmail.com>
Komu: "FPC-Pascal users discussions" <fpc-pascal@lists.freepascal.org>
Odesláno: 23.07.2016 0:29:32
Předmět: Re: [fpc-pascal] Weird string behavior
On 7/22/16, Jonas Maebe <jonas.ma...@elis.ugent.be> wrote:
ResultA := AnsiToUTF8(AnsiStrA + AnsiStrA); // UTF-8 ResultB :=
AnsiToUTF8(AnsiStrA) + AnsiToUTF8(AnsiStrA); // Win-1252
And resultA is not equal to ResultB
It doesn't look like too intuitive.
It would be good if someone with access to Delphi 2009+ could test
this.
I asked on Dutch Delphi forum if someone could test with D2009 or up.
Bart
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal