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

Reply via email to