Hello together!

Small feature announcement this time, but some might like it nevertheless:

FPC now supports unicode character constants that are outside of the Basic Multilingual Plane (BMP), thus all with a value > $FFFF, but < $10FFFF (the highest possible Unicode code point). As these are encoded as surrogate pairs in UTF-16 they aren't a single UnicodeChar, but instead they are always a UnicodeString constant. All four bases that FPC supports for specifying character constants are covered: binary (#%…), octal (#&…), decimal (#…) and hexadecimal (#$…).
This is also Delphi compatible.

Example (based on the code points provided in here: https://en.wikipedia.org/wiki/UTF-16#Examples ):

=== code begin ===

program tuchar;

procedure DumpStr(const aStr: UnicodeString);
var
  u: UnicodeChar;
begin
  for u in aStr do
    Write(HexStr(Ord(u), 4), ' ');
  Writeln;
end;

var
  s: UnicodeString;
begin
  s := #$10437;
  DumpStr(s);
  s := #$24b62;
  DumpStr(s);
end.

=== code end ===

This will result in the following output:

=== output begin ===

D801 DC37
D852 DF62

=== output end ===

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to