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
By Wiezutun
Lernprogramm: Schreiben Sie Ihre eigenen Findfiles-tool : Mehreren tausend Tipps, um Ihr Leben einfacher machen.