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
