folgende Funktion nutze ich, um aus einem Memo-Feld ein einzelnes Wort, auf dem der Cursor steht, zu gewinnen:
Code: Alles auswählen
Function TForm_keys.Keyword_in_Memo_suchen(keyw : TMemo ) : string;
var
i, z, x , k , posit : integer;
txt, s, res: WideString;
begin
res := '';
txt := UTF8Decode(keyw.Text);
i := keyw.SelStart;
posit := keyw.SelStart;
s := '';
repeat
res := s + res;
s := Copy(txt, i, 1);
Dec(i);
until (s <= ' ') or (i < 0);
i := keyw.SelStart + 1;
s := '';
repeat
res := res + s;
s := Copy(txt, i, 1);
Inc(i);
until (s <= ' ') or (s = '');
result := (ansistring(res)) ;
Edit1.Text:= result;
end;
Die funktioniert auch sehr gut, allerdings gibt es Probleme mit Umlauten:
Unter Linux (Kubuntu) wird das gewünschte Wort ohne Probleme aus dem Memo-Text extrahiert; kompiliere ich den identischen Code mit einer Windows-Oberfläche, so wird z.B. aus „Schlagwörter“ „Schlagw?rter“ und aus "Kübel" wird "K?bel".
Was mache ich falsch?
Aliobaba