Aktuell arbeite ich an einem Editor der Text, Bilder, Tabellen, etc anzeigt und auch editierbar macht.
Alles erstmal kein Problem, allerdings bin ich über die String-Verarbeitung gestolpert.
Ein Beispiel:
Code: Alles auswählen
var
s : string;
begin
s := '123';
Canvas.TextOut(1,1,s+' = '+IntToStr(length(s)));
end;
Zu sehen ist dann "123 = 3"
var
s : string;
begin
s := 'ÄÖÜ';
Canvas.TextOut(1,1,s+' = '+IntToStr(length(s)));
end;
Zu sehen ist dann "ÄÖÜ = 6"
Noch kurioser:
var
s : string;
begin
s := '123ÄÖÜ';
Canvas.TextOut(1,1,s+' = '+IntToStr(length(s)));
end;
Mir ist schon klar das es mit dem Unicode / ASCII usw zusammenhängt.
Sehr schlecht ist das die function Delete für strings auch Fehler macht wenn man z.B. Delete(s,5,1) vorgibt, dann wird von den 2Byte-Zeichen nur das erste gelöscht.
Hat jemand hierzu eine Idee oder Lösung ?
Ich habe hier und auch im Netz nichts wirkich funktionierendes gefunden.