Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateisuche - Stringuntersuchung (https://www.delphipraxis.net/113548-dateisuche-stringuntersuchung.html)

Stamper 9. Mai 2008 19:46


Dateisuche - Stringuntersuchung
 
Hallo,

ich bin auf der Suche, nach einem Suchalgorithmus, der jeden Dateinamen untersucht, ob der zu suchende Ausdruck enthalten ist.
Beispiel: Ich gebe als Suchbegriff "System" an und will, dass das Programm auch die Datei "System32.dll" findet. Bisher hab ich leider nur einen Suchalgorithmus, der die Datei als gefunden wiedergibt, wenn der Dateiname exakt dem Suchbegriff entspricht.

Weiß jemand, wo ich so was finde???

Gruß

mkinzler 9. Mai 2008 19:48

Re: Dateisuche - Stringuntersuchung
 
Such mal nach POS()

himitsu 9. Mai 2008 19:54

Re: Dateisuche - Stringuntersuchung
 
Delphi-Referenz durchsuchenFindFirst mit der Suchmaske 'system*.*' (mit "system" am Anfang) oder '*system*.*' (mit "system" an jeder Stelle) :angel:

Aber sowas hätte man auch in der OH nachlesen können. :stupid:
Zitat:

Zitat von OH zu FindFirst
Der Konstantenparameter Path enthält das Verzeichnis und die Dateinamensmaske. Es können auch Platzhalterzeichen verwendet werden. '.\test\*.*' gibt beispielsweise alle Dateien im aktuellen Laufwerk an.


FAlter 9. Mai 2008 20:12

Re: Dateisuche - Stringuntersuchung
 
Hi,

Ich glaube, ein simples FindFirst/Next/Close mit system.* entspricht dem, was Stamper möchte. Der Titel hat mich an ein anderes Thema erinnert :P was ich hiermit vorstellen möchte.

Dann bin ich auf der Suche nach einem FindFirst, bei dem ich mehrere unabhängige Dateinamensmasken angeben kann uns das mit zusätzlich alle Verzeichnisse (*.*) liefert, und das schneller als mein bisheriger Ansatz ist.

Bisher suche ich nämlich nach *.* und, falls es eine Datei ist, prüfe den Rest nachträglich. Verzeichnisse werden gespeichert, um sie beim nächsten FindFirst zu verwenden. Ist so nämlich schon wesentlich schneller als eine Einzelsuche nach den jeweiligen Dateien kombiniert mit einer Einzelsuche nach allen Verzeichnissen.

Mfg
FAlter

Stamper 10. Mai 2008 12:13

Re: Dateisuche - Stringuntersuchung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin,

@FAlter
Genial! Dass ich da nicht selber drauf gekommen bin. So musste man ja früher auch in der Windowssuche arbeiten, wenn man keinen exakten Dateinamen hatte.

Es funktioniert auch soweit, wenn ich hinter den Dateinamen in der Memo-Komponente zusätzlich den Stern mit eintrage.
Aber ich habe jetzt mal folgendes gemacht:

Delphi-Quellcode:
 For i := 0 to Memo1.Lines.Count-1 do
 begin
  Suchobjekt := Memo1.Lines[i];
  If not CheckBox1.Checked then
  begin
    Suchobjekt := '*' + Suchobjekt + '*';
  end;
    GetFilesInDirectory(Edit1.Text, Suchobjekt, clbSuchergebnisse.Items, True);
 end;
Hab mir gedachtk, das ist etwas benutzerfreundlicher.

Ich habe das Projekt mal im Anhang hochgeladen. Würde mich freuen, wenn ihr euch das mal anschaut und mir Rückmeldungen gebt. Aber erwartet nicht zu viel. Ich hab nur etwas Programmierung in der Schule gehabt.

Das Programm hat auch noch etwas, was mich stört - ich beschreib mal kurz die Funktion des Programmes: Man kann eine Liste von Dateien in das Memo-Feld eintragen und danach wird dann im Wahlverzeichnis gesucht. Die gefundenen Dateien werden aus dem Memo entfernt und in einer Checklistbox aufgeführt und markierte Dateien können in ein Wahlverzeichnis kopiert werden.
So, ich hatte ja danach gefragt, dass man auch Dateien findet, von denen man nicht den exakten Dateinamen angibt. Das Problem ist gelöst. Aber das Programm geht hin und vergleicht am Ende Suchergebnisse mit zu suchenden Objekten, um die gefundenen Objekte aus dem Memo zu entfernen. Wenn ich jetzt aber nur den ungefähren Dateinamen habe, findet er die gefundene Datei aber nicht mehr im Memo - hoffe, dass war jetzt nicht zu umständlich.^^

Also wie gesagt: würd mich über Rückmeldung freuen, aber erwartet nicht zu viel - es ist mein erstes richtiges Programm.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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-2025 by Thomas Breitkreuz