Note: if your string is UTF8 encoded, the last "character" can be encoded, can span over 1 to 4 "Char", you need to know the length of your character.

For example:

program Project1;
{$mode objfpc}{$H+}

uses
  SysUtils, Classes;
var
   s: array[0..30] of char;
   p: PChar;
   i: Integer;
begin
     p:= @s;
     StrPLCopy( p, 'Test€a', 30);
     Writeln( p);
     for i:= 0 to 7
     do
       Write( ord(s[i]),':',s[i],' ');
     Writeln;
     s[5]:= #0;
     Writeln( p);
     for i:= 0 to 7
     do
       Write( ord(s[i]),':',s[i],' ');
     Writeln;
end.

gives

$ ./project1
Test€a
84:T 101:e 115:s 116:t 226:� 130:� 172:� 97:a
Test�
84:T 101:e 115:s 116:t 226:� 0: 172:� 97:a
$

(the € character which spans over 3 chars is broken and so the end of the string becomes unreadable)

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to