Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

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

AW: Invertieren eines Unicodestrings mit Sonderzeichen

  Alt 18. Jun 2018, 00:06
Schon mal ein schnelles Danke, Uwe. Hatte da auch dunkel was in Erinnerung, aber leider fiel mir nichts konkretes ein...

So funktioniert es nun:

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

  while c >= 1 do begin
    if (c>1) and (S[c].IsSurrogate) and (S[c-1].IsSurrogate) then begin
      if s[c].IsSurrogatePair (S[c-1], S[c]) then begin
        N := N + S[c-1] + S[c];
        dec (c, 2);
      end;
    end else begin
      N := N + S[c];
      dec (c);
    end;
  end;

  edout.Text := N;
end;
Die Problemstellung war nur ein (reduzierter) Ausschnitt aus einer Verschlüsselungsroutine, die ich noch unter Delphi-2007, also NON-Unicode verwendet habe, die Anpassung mit den zusätzlichen Überprüfungen wird wahrscheinlich einiges an Laufzeit kosten, bin mal gespannt..
Miniaturansicht angehängter Grafiken
invert.jpg  

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