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..