Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Pos - ungenau suchen (https://www.delphipraxis.net/105153-pos-ungenau-suchen.html)

toyoman 17. Dez 2007 08:35


Pos - ungenau suchen
 
Hallo

Habe soeben gelernt wie ich mit dem Befehl POS eine Dateien durchsuchen kann. Soweit so gut.

Nur leider...

habe ich z.B. die Worte: "siehe Titel" in den Files drin.
Wenn ich nun mit Pos die Stringlisten durchsuche findet er die Worte siehe und Titel nicht allein sondern nur wenn ich nach beidem also "siehe Titel" suche.

Versteh das nicht ganz, der sucht also immer zeileweise oder wie?

Also nochmal genauer:
durchsucht werden Textfiles mit ganz normalen Stringinhalten.
Es kann eine oder mehrere Zeilen drin vorkommen.
ich suche über ein Edit Feld wo ich den Suchstring eingebe (ein oder mehrere Worte).

alles unklar? ;)

peschai 17. Dez 2007 08:39

Re: Pos - ungenau suchen
 
Hallo

was möchtest du tun ?
Alle zeilnummern ausgeben wo dein suchtext vorkommt oder die Annzahl wie oft ?

"Pos" sucht nach dem ERSTEN vorkommen eines "SubStrings" in einem String.

Wenn du eine Textdatei komplett in eine String geladen hast, dann kannst du damit das erste Vorkommen finden. Für weitere Vorkommen musst du mehr tun...

Wenn du den Text in eine Stringliste geladen hast, dann kannst du in einer Schleife alle Zeilen durch gehen und damit zeileweise jeweils das erste Vorkommen finden...

...Ok ?

Aurelius 17. Dez 2007 08:41

Re: Pos - ungenau suchen
 
vielleicht hilft dir der Thread
http://www.delphipraxis.net/internal...661&highlight=

Bei dir würden sich wohl die Regulären Ausdrücke anbieten...

toyoman 17. Dez 2007 08:45

Re: Pos - ungenau suchen
 
Zitat:

Zitat von peschai
Hallo

was möchtest du tun ?
Alle zeilnummern ausgeben wo dein suchtext vorkommt oder die Annzahl wie oft ?

...Ok ?

Meine aktuelle Prozedur geht wie folgt:

Delphi-Quellcode:
procedure TfrmUebersicht.BitBtn1Click(Sender: TObject);
var
  i,j:integer;
  liste:TStringlist;
begin
      listview1.ItemIndex:=0;
      for i:=0 to listview1.Items.Count-1 do
      begin
          liste:=TStringList.Create;
          liste.LoadFromFile(listview1.Items.Item[listview1.itemindex].SubItems[5]+'.dec');
          for j:=0 to liste.Count-1 do
          begin
              if pos(liste[j],edsuch.Text) >0 then
              begin
                showmessage(listview1.Items.Item[listview1.itemindex].SubItems[5]+'.dec');
                listview1.Items.Item[j].ListView.Canvas.Brush.Color:=clred;
              end else
              begin
                //showmessage('nichts gefunden');
              end;
          end;
          liste.Free;
          listview1.ItemIndex:=listview1.ItemIndex+1;
      end;
end;
ich möchte die Zeile in der Listview markieren wenn der Text im File gefunden wurde... (die Listview enthält in einer Spalte Pfad und Dateinamen der zu durchsuchenden Dateien.

peschai 17. Dez 2007 08:51

Re: Pos - ungenau suchen
 
Hallo

hast du eventuell in deinem Sourcecode etwas vertauscht ?
Delphi-Quellcode:
function Pos(SubStr: string; S: string): Integer;

toyoman 17. Dez 2007 08:54

Re: Pos - ungenau suchen
 
Zitat:

Zitat von xX0815Xx
Bei dir würden sich wohl die Regulären Ausdrücke anbieten...

was heisst das konkret: reguläre Ausdrücke?

toyoman 17. Dez 2007 08:55

Re: Pos - ungenau suchen
 
Zitat:

Zitat von peschai
Hallo

hast du eventuell in deinem Sourcecode etwas vertauscht ?
Delphi-Quellcode:
function Pos(SubStr: string; S: string): Integer;

OWWEEHHHH!!! tatsächlich..... mensch jetzt gedder!

peschai 17. Dez 2007 08:56

Re: Pos - ungenau suchen
 
Oh noch etwas...

1.)
Delphi-Quellcode:
listview1.Items.Item[j].ListView.Canvas.Brush.Color:=clred;
"I" oder wirklich "J" ???

2.)
Mach den TStringList.Create ausserhalb der Schleife ...
Delphi-Quellcode:
try
  liste := tstringlist.create
  For ....
    begin
    end
finally
  FreeAndNil(liste);
end;

toyoman 17. Dez 2007 08:58

Re: Pos - ungenau suchen
 
Zitat:

Zitat von peschai
Oh noch etwas...

Vielen Dank für deine Tipps am Montag Morgen :) Wird sofort umgebaut...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz