Suchen nach Dateien und Ordnern mit Delphi

Bei der Suche nach Dateien ist es oft nützlich und notwendig, Unterordner zu durchsuchen. Sehen Sie hier, wie Sie Delphis Stärke nutzen, um ein einfaches, aber leistungsstarkes Projekt zu erstellen, in dem alle übereinstimmenden Dateien gefunden werden.

Suchprojekt für Datei- / Ordnermasken

Mit dem folgenden Projekt können Sie nicht nur in Unterordnern nach Dateien suchen, sondern auch auf einfache Weise Dateiattribute wie Name, Größe, Änderungsdatum usw. bestimmen, damit Sie sehen können, wann das Dialogfeld "Dateieigenschaften" über den Windows-Explorer aufgerufen werden muss. Insbesondere wird gezeigt, wie Sie Unterordner rekursiv durchsuchen und eine Liste von Dateien zusammenstellen, die mit einer bestimmten Dateimaske übereinstimmen. Die Technik der Rekursion ist als Routine definiert, die sich selbst in der Mitte ihres Codes aufruft.

Um den Code im Projekt zu verstehen, müssen wir uns mit den nächsten drei Methoden vertraut machen, die in der Einheit SysUtils definiert sind: FindFirst, FindNext und FindClose.

FindFirst

FindFirst ist der Initialisierungsaufruf zum Starten einer detaillierten Dateisuche mithilfe von Windows-API-Aufrufen. Die Suche sucht nach Dateien, die dem Pfad-Bezeichner entsprechen. Der Pfad enthält normalerweise Platzhalterzeichen (* und?). Der Parameter Attr enthält Kombinationen von Dateiattributen, um die Suche zu steuern. Die in Attr erkannten Dateiattributkonstanten sind: faAnyFile (beliebige Datei), faDirectory (Verzeichnisse), faReadOnly (schreibgeschützte Dateien), faHidden (versteckte Dateien), faArchive (Archivdateien), faSysFile (Systemdateien) und faVolumeID (Volume-ID-Dateien).

Wenn FindFirst eine oder mehrere übereinstimmende Dateien findet, gibt es 0 (oder einen Fehlercode für einen Fehler, normalerweise 18) zurück und füllt die Aufzeichnung mit Informationen zur ersten übereinstimmenden Datei. Um die Suche fortzusetzen, müssen wir denselben TSearcRec-Datensatz verwenden und ihn an die FindNext-Funktion übergeben. Nach Abschluss der Suche muss die FindClose-Prozedur aufgerufen werden, um interne Windows-Ressourcen freizugeben. Die TSearchRec ist ein Datensatz definiert als:

Wenn die erste Datei gefunden wurde, wird der Rec-Parameter gefüllt und die folgenden Felder (Werte) können von Ihrem Projekt verwendet werden.
. Attr, die Attribute der Datei wie oben beschrieben.
. Name Enthält eine Zeichenfolge, die einen Dateinamen ohne Pfadinformationen darstellt
. Größe in Bytes der gefundenen Datei.
. Zeit speichert das Änderungsdatum und die Änderungszeit der Datei als Dateidatum.
. FindData Enthält zusätzliche Informationen wie die Erstellungszeit der Datei, die letzte Zugriffszeit sowie den langen und den kurzen Dateinamen.

Nächstes finden

Die FindNext-Funktion ist der zweite Schritt in der detaillierten Dateisuche. Sie müssen denselben Suchdatensatz (Rec) übergeben, der durch den Aufruf von FindFirst erstellt wurde. Der Rückgabewert von FindNext ist null für den Erfolg oder ein Fehlercode für einen Fehler.

FindClose

Diese Prozedur ist der erforderliche Beendigungsaufruf für FindFirst / FindNext.

Übereinstimmende rekursive Dateimasken-Suche in Delphi

Dies ist das Projekt "Nach Dateien suchen", wie es zur Laufzeit angezeigt wird. Die wichtigsten Komponenten des Formulars sind zwei Bearbeitungsfelder, ein Listenfeld, ein Kontrollkästchen und eine Schaltfläche. In Bearbeitungsfeldern werden der Pfad, in dem gesucht werden soll, und eine Dateimaske angegeben. Gefundene Dateien werden im Listenfeld angezeigt. Wenn das Kontrollkästchen aktiviert ist, werden alle Unterordner auf übereinstimmende Dateien überprüft.

Nachfolgend finden Sie einen kleinen Codeausschnitt aus dem Projekt, um zu zeigen, dass das Suchen nach Dateien mit Delphi so einfach wie möglich ist: