Bei der Suche nach Dateien ist es häufig nützlich und notwendig, Unterordner zu durchsuchen. Hier erfahren Sie, wie Sie es verwenden DelphiDie Stärke eines einfachen, aber leistungsstarken Projekts zum Finden aller übereinstimmenden Dateien.
Projekt zur Suche nach Datei- / Ordnermasken
Mit dem folgenden Projekt können Sie nicht nur über Unterordner nach Dateien suchen, sondern auch auf einfache Weise Dateiattribute wie Name, Größe, Änderungsdatum usw. ermitteln. So können Sie sehen, wann Sie das Dialogfeld "Dateieigenschaften" über aufrufen müssen Windows Explorer. Insbesondere wird gezeigt, wie Unterordner rekursiv durchsucht und eine Liste von Dateien zusammengestellt werden, die einer bestimmten Dateimaske entsprechen. Die Rekursionstechnik ist definiert als eine Routine, die sich 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 SysUtils-Einheit definiert sind: FindFirst, FindNext und FindClose.
FindFirst
FindFirst ist der Initialisierungsaufruf zum Starten einer detaillierten Dateisuchprozedur mit Windows-API-Aufrufe. Die Suche sucht nach Dateien, die dem Pfadbezeichner entsprechen. Der Pfad enthält normalerweise Platzhalterzeichen (* und?). Der Parameter Attr enthält Kombinationen von Dateiattributen zur Steuerung der Suche. Die in Attr erkannten Dateiattributkonstanten sind: faAnyFile (jede 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 Fehler, normalerweise 18) zurück und füllt die Aufzeichnung mit Informationen zur ersten übereinstimmenden Datei aus. Um die Suche fortzusetzen, müssen wir denselben TSearcRec-Datensatz verwenden und an die FindNext-Funktion übergeben. Nach Abschluss der Suche muss die FindClose-Prozedur aufgerufen werden, um interne Windows-Ressourcen freizugeben. Der TSearchRec ist ein Datensatz, der definiert ist als:
Wenn die erste Datei gefunden wird, 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 die langen und 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 Erfolg oder ein Fehlercode für jeden Fehler.
FindClose
Diese Prozedur ist der erforderliche Beendigungsaufruf für FindFirst / FindNext.
Rekursive Dateimaskenübereinstimmung Suchen 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 wird der Pfad angegeben, in dem gesucht werden soll, sowie eine Dateimaske. Gefundene Dateien werden im Listenfeld angezeigt. Wenn das Kontrollkästchen aktiviert ist, werden alle Unterordner nach übereinstimmenden Dateien durchsucht.
Unten finden Sie einen kleinen Code-Ausschnitt aus dem Projekt, um zu zeigen, dass die Suche nach Dateien mit Delphi so einfach wie möglich ist: