Umlaute in TEdit

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Umlaute in TEdit

Beitrag von kpmais »

Folgendes (Beispielcode ist hier nicht notwendig):
- ich nutze ein TEdit zur Eingabe in der Form
- ich lese mit dem KeyPress Event den Inhalt des Edits und mache damit irgendetwas
- wenn ich die Textlänge des Textes hier bestimme erhalte ich zum Beispiel bei
'hallo' korrekt die 5.
habe ich aber zum Beispiel einen Umlaut dabei wie in 'Ärger' erhalte ich als Textlänge nicht 5 sondern 6 !!!
Das fiel mir nur auf, weil ich im keypress eine Entscheidung habe, die von der Textlänge abhängt.
Ich weiß nicht, ob es sich dabei um einen Bug handelt oder ob ich UTF und Ansi verwurschtele (was ich eher für wahrscheinlich halte).
Interessieren würde ich mich dennoch dafür, auf was ich mich dabei verlassen kann.

Danke fürs Lesen und die Hilfe

Peter .....

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Umlaute in TEdit

Beitrag von wp_xyz »

Das 'Ä' besteht in UTF8 aus zwei Bytes, daher wird Length (was die Bytes zählt, nicht die "Zeichen") um 1 größer als erwartet. Wenn du absolut die "Zeichenlänge" brauchst, dann verwende UTF8Length() oder UTF8FastLength() aus der Unit LazUTF8.

Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Re: Umlaute in TEdit

Beitrag von kpmais »

Genau das wollte ich wissen.
Vielen dank ....

Antworten