Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#1

Unicodezeichen mit mehr als einem wideChar?

  Alt 18. Mai 2021, 15:46
Hallo Zusammen!

Ich habe in der Vergangenheit kaum mit Unicode arbeiten müssen.

Viele Unicode Zeichen - non-Ascii - lassen sich immer noch mit einem "WordChar" darstellen.
Es gibt jedoch auch Zeichen die aus 2 und 3 "WordChars" bestehen.

z.B. "LATIN CAPITAL LETTER C WITH COMBINING OGONEK AND COMBINING BREVE"

$0043 $0328 $0306...

Wenn ich also einen String habe: "ABCDEFG" + CHR($43)+chr($328)+chr($306);
wird dieser in einem TEdit als "ABCDEFGC" <- Das C hat dann die schnörkel, dargestellt.

Soweit so gut... Length(Edit.Text) = 10
Wenn meine Datenbank, mein Feld im Record oder was auch immer nur (in diesem Beispiel) eine Länge von 9 Chars hat...
Ein Copy würde aber das Zeichen ändern. // Adresse.Str := Copy(Edit.Text,1,9);

Auch die üblichen Routine wie:

Delphi-Quellcode:
for i:=1 to length(S) do
  begin
    if S[i] = cMyCoolesC then
     Foo(S[i]);
  end;
Kann nie funktionieren, da ich eigentlich immer 3 Chars vergleichen müsste...

Delphi-Quellcode:
S := cMyCoolesC + 'A';
Pos('A',S) = 4;
Mit solchen Zeichen funktioniert die "normalen" Routine die man i.d.R zu Haufe im Source hat nicht.

Wie geht Ihr damit um, wenn Ihr solche Zeichen verarbeiten müsst?
Übersehe ich etwas?

Grüsse
Mavarik
  Mit Zitat antworten Zitat