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