Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#16

AW: Suchbegriff als "ganzes Wort" innerhalb eines Textes suchen

  Alt 21. Jun 2013, 17:28
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;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (21. Jun 2013 um 17:54 Uhr)
  Mit Zitat antworten Zitat