Habe übrigens eine neue Version meiner Klasse hier angehängt:
http://www.lazarusforum.de/viewtopic.php?p=24321#p24321" onclick="window.open(this.href);return false;
Das Ganze heisst jetzt "utf8helper", das es doch im wesentlichen darum geht, den Umgang mit der Codierung welche die LCL verwendet zu vereinfachen.
Der Witz dabei ist, dass man auf den String auf alle möglichen Arten zugreifen kann, ohne sich gross zu kümmern.
Die Zugriffe lassen sich mischen. Man kann ja z.B. UTF8-Zeichen nicht mit "case" verwenden, da dies Strings sind.
Deshalb fragt man die einfach z.B. als UCS-4 (property UnicodeChars) ab.
Beispiel:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var uni:TUTF8Helper;
i:Integer;
begin
uni:=TUTF8Helper.Create('Mal sehen');
uni.UnicodeChars[2]:=$1033F; //Das "a" mit dem "GOTHIC LETTER URUS" als UCS4Char ersetzen
for i:=1 to uni.Count do
case uni.UnicodeChars[i] of
$1033F: uni[i]:='ä'; // UCS4Char "GOTHIC LETTER URUS" mit UTF-8 'ä' ersetzen
end;
Memo1.text:=uni.UTF8Str;
uni.free;
end;