Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#1

Invertieren eines Unicodestrings mit Sonderzeichen

  Alt 17. Jun 2018, 23:13
Wenn ich auf einen Text, der als erstes Zeichen das Zeichen 55357 enthält (siehe Screenshot), folgenden Codeschnipsel anwende, um den String einfach nur zu invertieren, dann wird das Sonderzeichen gekillt. Wie muss ich das richtig machen, um auch das Sonderzeichen zu behalten?

Delphi-Quellcode:
procedure TForm15.bnInvertClick(Sender: TObject);
var
  L, Len: Integer; N, S: string;
begin
  Len := Length (edIn.Text);
  S := edIn.Text;

  for L := Len downto 1 do begin
    N := N + S[L];
  end;

  edout.Text := N;
end;
In der DFM-Datei ist der Edit.Text übrigens so abgelegt:

Delphi-Quellcode:
Text =
      #55357#56555' Gute Nachricht '#8211' gro'#223'er Sommerspa'#223' zu kleinen Preisen bei eBa' +
      'y'
Das Sonderzeichen dürfte also in Wahrheit aus 2 16-bit Werten bestehen, so dass die Umkehrung der Reihenfolge beiden Werte das Zeichen kaputt macht?
Miniaturansicht angehängter Grafiken
insert.jpg  

Geändert von Harry Stahl (18. Jun 2018 um 11:52 Uhr)
  Mit Zitat antworten Zitat