Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#13

AW: Steuerzeichen-String umwandeln in "echtes" Steuerzeichen

  Alt 29. Jun 2017, 16:21
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?

Geändert von samso (29. Jun 2017 um 16:36 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat