[fpc-pascal] Weird string behavior

Graeme Geldenhuys mailinglists at geldenhuys.co.uk
Fri Jul 22 13:17:49 CEST 2016


On 2016-07-22 11:55, Bart wrote:
> Gives:
> StringCodePage(AnsiStrA) now is: 65001
> AnsiStrA:   195 179

I don't understand, why did AnsiStrA change its codepage type after the
3rd assignment to it?

Here is the results on my Windows 7 system.

==========================================
$ codepagestring.exe
StringCodePage(AnsiStrA) now is: 1252
StringCodePage(AnsiStrA) now is: 65001
AnsiStrA:   195 179
==========================================

All I did to the last code example was duplicate the line of code that
calls stringcodepage() as shown here... So I get a before and after result.

==========================================
program codepagestring;

{$mode objfpc}{$H+}

procedure DisplayBytes(S:RawByteString);
var
  i:Integer;
begin
  Write('  ');
  for i:=1 to length(s) do
    write(ord(s[i]),' ');
  writeln;
end;

var
  AnsiStrA: String;
begin
  writeln('StringCodePage(AnsiStrA) now is: ',stringcodepage(ansistra));
  AnsiStrA:=' ';
  AnsiStrA[1]:=#243; // o acute win-1252
  AnsiStrA := AnsiToUtf8(AnsiStrA);
  writeln('StringCodePage(AnsiStrA) now is: ',stringcodepage(ansistra));
  Write('AnsiStrA: ');
  DisplayBytes(AnsiStrA);
end.
==========================================


Regards,
  Graeme

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

My public PGP key:  http://tinyurl.com/graeme-pgp



More information about the fpc-pascal mailing list