jetzt muss ich das Thema aus der Versenkung holen...
Bei SearchBuf hab ich leider folgendes festgestellt:
Suche ich mit der Option "soWholeWord" so wird nur das ganze Wort gefunden
Leider aber auch wenn zuvor oder danach ein Unterstrich vorhanden ist.
Z. B.: Suchtext "hallo"
dann wird auch "_hallo_" gefunden - oder sogar bei "_hallo_du_da"
Wie kann ich dem SearchBuf beibringen, dass er den Unterstrich nicht als
Worttrenner nutzen soll?
Eine Möglichkeit wäre, nach SearchBuf prüfen, ob vor dem Suchtext und
nach dem Suchtext ein Unterstrich ist - aber gefallen tut mir das nicht
Hab da auf die Schnelle mal etwas zusammengeschustert, aber schön ist es
trotzdem nicht:
Delphi-Quellcode:
//Variablen vordefinieren
Offset := 0;
repeat
//Suchtext ab "Offset" suchen
P := SearchBuf(PWideChar(Zeile), max_Ende, 0, Offset, SuchText, StringSearchOptions);
//Offset nullen (falls P = nil ist)
Offset := 0;
//wenn der Suchtext gefunden wurde...
If Assigned(P) then
begin
//Offset ermitteln (Pointer Suchwort - Pointer der Zeile) + 1
Offset := (P - PWideChar(Zeile)) + 1;
i := Offset - 1;
If i >= 0 then
If (Zeile[i] = '_') then
Offset := 0;
i := Offset + length(SuchText);
If i <= length(Zeile) then
If (Zeile[i] = '_') then
Offset := 0;
If Offset <> 0 then
//Anzahl hochzählen
inc(Result);
end;
until Offset = 0;