Volltextsuche in TMemo

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Volltextsuche in TMemo

Beitrag von kupferstecher »

Hallo allerseits,

wie der Titel schon sagt, möchte ich eine Volltextsuche in einem TMemo implementieren (für einen Art Editor).
Mein Ansatz war, den Text in Memo.Text mit der Funktion Pos zu durchsuchen und die gefundene Stelle mit SelStart und SelLength zu markieren. Für ASCII-Zeichen funktioniert das auch, aber nicht bei UTF-8-Zeichen mit mehreren Byte pro Zeichen. Bei der Suche bekomm ich nämlich die Byteposition zurück, SelStart bezieht sich aber auf die Zeichenposition (unter Windows). Auch SelLength stimmt dann nicht.

Gibt es eine einfachere Möglichkeit eine Suche zu implementieren? Oder wie könnte man die Byteposition auf die Zeichenposition umrechnen?

Danke schonmal!

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Volltextsuche in TMemo

Beitrag von Ally »

Hallo kupferstecher,

dazu kannst du UTF8Pos aus LazUTF8 benutzen.
Dort finden sich noch weitere nützliche Sachen für den Umgang mit UTF8-Strings (UTF8Copy, UTF8Length usw.).

Gruß Roland

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

[gelöst] Re: Volltextsuche in TMemo

Beitrag von kupferstecher »

Hallo Roland,

UTF8Pos funktioniert einwandfrei, mit UTF8Length bestimme ich nun SelLength, auch das passt.

Vielen Dank!

Antworten