![]() |
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? ;) |
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 ? |
Re: Pos - ungenau suchen
vielleicht hilft dir der Thread
![]() Bei dir würden sich wohl die Regulären Ausdrücke anbieten... |
Re: Pos - ungenau suchen
Zitat:
Delphi-Quellcode:
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.
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; |
Re: Pos - ungenau suchen
Hallo
hast du eventuell in deinem Sourcecode etwas vertauscht ?
Delphi-Quellcode:
function Pos(SubStr: string; S: string): Integer;
|
Re: Pos - ungenau suchen
Zitat:
|
Re: Pos - ungenau suchen
Zitat:
|
Re: Pos - ungenau suchen
Oh noch etwas...
1.)
Delphi-Quellcode:
"I" oder wirklich "J" ???
listview1.Items.Item[j].ListView.Canvas.Brush.Color:=clred;
2.) Mach den TStringList.Create ausserhalb der Schleife ...
Delphi-Quellcode:
try
liste := tstringlist.create For .... begin end finally FreeAndNil(liste); end; |
Re: Pos - ungenau suchen
Zitat:
|
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