[fpc-pascal] Weird string behavior

Mattias Gaertner nc-gaertnma at netcologne.de
Sat Jul 23 08:11:37 CEST 2016


On Sat, 23 Jul 2016 00:29:32 +0200
Bart <bartjunk64 at gmail.com> wrote:

> On 7/22/16, Jonas Maebe <jonas.maebe at 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.

Here is a result of Delphi 10.1:

program DTestConcatenate;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

var
  s1,s2,s3: AnsiString;
  r1,r2,r3: RawByteString;
begin
  s1:='A';   // 1252
  s2:='AƤ';  // 1252
  writeln('s1="',s1,'" cp=',StringCodePage(s1));
  writeln('s2="',s1,'" cp=',StringCodePage(s2));
  r1:=AnsiToUTF8(s1); // 65001
  r2:=AnsiToUTF8(s2); // 65001
  writeln('r1="',r1,'" cp=',StringCodePage(r1));
  writeln('r2="',r2,'" cp=',StringCodePage(r2));
  r3:=r1+r2; // 65001
  writeln('r3="',r3,'" cp=',StringCodePage(r3));
  s3:=r1+r2; // 65001
  writeln('s3="',s3,'" cp=',StringCodePage(s3));
end.

Mattias



More information about the fpc-pascal mailing list