Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool


Gewusst wie: FindFirst und FindNext bei der Rekursion für Dateinamen und Pfade zu nutzen eine stringlist

Gewusst wie: Erstellen einer Liste der Dateien in einen Ordner und seine Unterordner

In der folgenden kurzen Tutorial zeige ich Ihnen die Grundlagen für das Schreiben Ihrer eigenen 'Dateien suchen'-Tools.

Die Prozedur FindFiles(FilesList, StartDir, FileMask) sucht Dateien in einem bestimmten Ordner und seinen Unterordnern. Die Dateien entsprechen einer Filemask, die Sie angeben.

Der Parameter FilesList ist eine Stringlist die vollständigen Pfade der Dateien hinzugefügt werden.

Im StartDir -Parameter übergeben Sie das Startverzeichnis (Ordner), einschließlich des Laufwerks. Wenn Sie eine gesamte Festplatte durchsuchen möchten, geben Sie das Root-Verzeichnis von diesem Datenträger, z. B. C:\ oder A:\

Im Parameter FileMask übergeben Sie den Namen der Datei zu suchen, oder eine Dateimaske mit Platzhaltern (mit * und?). Beispiele:

FindFiles (FilesList, 'c:\', 'letter01.doc');
FindFiles (FilesList, 'c:\', ' * .dpr ');
FindFiles (FilesList, 'd:\projects', ' Test??. DPR');

Wenn Sie diese Vorgehensweise ausprobieren möchten, fügen Sie die folgenden Komponenten zu einem Formular:

  • zwei Bearbeitungen (einer für das Startverzeichnis, einer für die Maske)
  • eine Schaltfläche
  • eine TLabel
  • eine ListBox

Den Quellcode von FindFiles

In FindFiles wir Rekursion verwenden: das Verfahren nennt sich, um die Dateien zu finden, die in Unterverzeichnissen befinden.


Prozedur FindFiles (FilesList: TStringList;
StartDir, FileMask: string);
var
SR: TSearchRec;
DirList: TStringList;
IsFound: Boolean;
i: Ganzzahl;
beginnen
Wenn StartDir[Length(StartDir)] <> ' \' dann
StartDir: = StartDir + ' \';
Erstellen Sie eine Liste der Dateien im Verzeichnis StartDir
Enthalten Sie keine Verzeichnisse!
IsFound: =
FindFirst (StartDir + FileMask, FaAnyFile-FaDirectory, SR) = 0;
während IsFound fangen
FilesList.Add (StartDir + SR. Name);
IsFound: = FindNext(SR) = 0;
Ende;
FindClose(SR);
Erstellen Sie eine Liste von Unterverzeichnissen
DirList: = TStringList.Create;
IsFound: = FindFirst (StartDir +'*. *', FaAnyFile, SR) = 0;
während IsFound fangen
Wenn ((SR. Attr und FaDirectory) <> 0) und
(SR. Name [1] <> '.') dann
DirList.Add (StartDir + SR. Name);
IsFound: = FindNext(SR) = 0;
Ende;
FindClose(SR);
Durchsuchen Sie die Liste der Unterverzeichnisse rekursiv
für i: = 0 to DirList.Count-1
FindFiles (DirList [i], FileMask);
DirList.Free;
Ende;

Wie FindFiles verwenden?

Vor dem Aufruf von FindFiles, erstellen Sie eine Stringlist, der FindFiles die vollständigen Pfade der Dateien hinzufügen wird, die gefunden werden. Der Inhalt der Stringlist können in einer Listbox auf der Festplatte, gespeichert angezeigt... Schließlich müssen Sie diese Stringlist frei.


Prozedur TForm1.ButtonFindClick(Sender: TObject);
var
FilesList: TStringList;
beginnen
FilesList: = TStringList.Create;
versuchen Sie
FindFiles (FilesList, EditStartDir.Text, EditFileMask.Text);
ListBox1.Items.Assign(FilesList);
LabelCount.Caption: = ' Dateien gefunden: '+ IntToStr(FilesList.Count);
Sonstige Verarbeitung mit der Liste der Dateien...
// ...
Schließlich
FilesList.Free;
Ende;
Ende;









Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool


Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Gewusst wie: FindFirst und FindNext bei der Rekursion für Dateinamen und Pfade zu nutzen eine stringlist

Gewusst wie: Erstellen einer Liste der Dateien in einen Ordner und seine Unterordner

In der folgenden kurzen Tutorial zeige ich Ihnen die Grundlagen für das Schreiben Ihrer eigenen 'Dateien suchen'-Tools.

Die Prozedur FindFiles(FilesList, StartDir, FileMask) sucht Dateien in einem bestimmten Ordner und seinen Unterordnern. Die Dateien entsprechen einer Filemask, die Sie angeben.

Der Parameter FilesList ist eine Stringlist die vollständigen Pfade der Dateien hinzugefügt werden.

Im StartDir -Parameter übergeben Sie das Startverzeichnis (Ordner), einschließlich des Laufwerks. Wenn Sie eine gesamte Festplatte durchsuchen möchten, geben Sie das Root-Verzeichnis von diesem Datenträger, z. B. C:\ oder A:\

Im Parameter FileMask übergeben Sie den Namen der Datei zu suchen, oder eine Dateimaske mit Platzhaltern (mit * und?). Beispiele:

FindFiles (FilesList, 'c:\', 'letter01.doc');
FindFiles (FilesList, 'c:\', ' * .dpr ');
FindFiles (FilesList, 'd:\projects', ' Test??. DPR');

Wenn Sie diese Vorgehensweise ausprobieren möchten, fügen Sie die folgenden Komponenten zu einem Formular:

  • zwei Bearbeitungen (einer für das Startverzeichnis, einer für die Maske)
  • eine Schaltfläche
  • eine TLabel
  • eine ListBox

Den Quellcode von FindFiles

In FindFiles wir Rekursion verwenden: das Verfahren nennt sich, um die Dateien zu finden, die in Unterverzeichnissen befinden.


Prozedur FindFiles (FilesList: TStringList;
StartDir, FileMask: string);
var
SR: TSearchRec;
DirList: TStringList;
IsFound: Boolean;
i: Ganzzahl;
beginnen
Wenn StartDir[Length(StartDir)] <> ' \' dann
StartDir: = StartDir + ' \';
Erstellen Sie eine Liste der Dateien im Verzeichnis StartDir
Enthalten Sie keine Verzeichnisse!
IsFound: =
FindFirst (StartDir + FileMask, FaAnyFile-FaDirectory, SR) = 0;
während IsFound fangen
FilesList.Add (StartDir + SR. Name);
IsFound: = FindNext(SR) = 0;
Ende;
FindClose(SR);
Erstellen Sie eine Liste von Unterverzeichnissen
DirList: = TStringList.Create;
IsFound: = FindFirst (StartDir +'*. *', FaAnyFile, SR) = 0;
während IsFound fangen
Wenn ((SR. Attr und FaDirectory) <> 0) und
(SR. Name [1] <> '.') dann
DirList.Add (StartDir + SR. Name);
IsFound: = FindNext(SR) = 0;
Ende;
FindClose(SR);
Durchsuchen Sie die Liste der Unterverzeichnisse rekursiv
für i: = 0 to DirList.Count-1
FindFiles (DirList [i], FileMask);
DirList.Free;
Ende;

Wie FindFiles verwenden?

Vor dem Aufruf von FindFiles, erstellen Sie eine Stringlist, der FindFiles die vollständigen Pfade der Dateien hinzufügen wird, die gefunden werden. Der Inhalt der Stringlist können in einer Listbox auf der Festplatte, gespeichert angezeigt... Schließlich müssen Sie diese Stringlist frei.


Prozedur TForm1.ButtonFindClick(Sender: TObject);
var
FilesList: TStringList;
beginnen
FilesList: = TStringList.Create;
versuchen Sie
FindFiles (FilesList, EditStartDir.Text, EditFileMask.Text);
ListBox1.Items.Assign(FilesList);
LabelCount.Caption: = ' Dateien gefunden: '+ IntToStr(FilesList.Count);
Sonstige Verarbeitung mit der Liste der Dateien...
// ...
Schließlich
FilesList.Free;
Ende;
Ende;


Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool

Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung