Ja, das habe ich übersehen, dass wir es hier mit 4 Byte
Unicode zu tun haben. Deshalb muss hier UCS4 zu UTF16 gewandelt werden. Damit das funktioniert wird Delphi ab 2009 benötigt.
Delphi-Quellcode:
function StringToSteuerZeichen(
const s:
String):
String;
var
C: Cardinal;
sl, sh: Word;
begin
C := StrToInt(copy(s, 2, MaxInt));
if c>=$10000
then begin
dec(c, $10000);
sl := c
and $3FF;
sl := sl
or $DC00;
//$DC00 = $37 shl 10
sh := c
shr 10;
sh := sh
or $D800;
//$D800 = $36 shl 10
SetLength(Result, 2);
Result[1] := Char(sh);
Result[2] := Char(sl);
end
else begin
SetLength(Result, 1);
Result[1] := Char(c);
end;
Vielleicht bekommt ja irgend jemand heraus, wie man UCS4StringToUnicodeString benutzen muss, um zum richtigen Ergebnis zu kommen?