bisher habe ich es so gelöst:
Code: Alles auswählen
s:widestring;
begin
s:='ÄÖÜßäöü';
if pos(str[x], s) = 0)
....
Aber ich denke das Problem müsstet ihr erkennen: Ich belege den String s vor.Ich weiß aber es gibt noch mehr UTF8 Zeichen außer die die dadrin sind.
Gibt es eine bessere Möglichkeit ? Ich hoffe ihr wisst was ich meine. Um in meinem PLEdit eine Wortweise Spring Funktion einzubauen brauche ich so eine Möglichkeit. Komischerweise geht folgender Code nur mit dem Teilcode von Oben:
Code: Alles auswählen
function GetNextWort(const aX:Integer=-1):Integer;
var
x,z,c,cx:Integer;
str:widestring;
s:widestring;
begin
s:='ÄÖÜßäöü';
z:=0;
str:=Lines[CaretY];
c:=UTF8Length(str);
if ax = -1 then
cx:=CaretX+1
else begin
cx:=aX;
end;
if str <> '' then begin
if (str[cx] in WordDelimiters) or (cx >= c) then begin
if (cx >= c) and (CaretY <=Count-1) then begin
CaretY:=CaretY+1;
cx:=0;
end;
result:=GetNextWort(cx+1);
exit;
end;
for x:=cx to c+1 do begin
if (((str[x] in WordDelimiters)) and (pos(str[x], s) = 0)) or (x >=c) or (str[x] = ' ') then begin
z:=x;
break;
end;
end; // for x
end
else begin
if CaretY <=Count-1 then begin
CaretY:=CaretY+1;
result:=GetNextWort(0);
end;
end;
result:=z;
end; // GetNextWort
Code: Alles auswählen
WordDelimiters: set of Char = [#0..#255] - ['a'..'z','A'..'Z','1'..'9','0'];