
09/12/2021 (Version 3.5)
13.03.2021 (Version 3.4)
02/01/2021 (Version 3.3)
18.12.2020 (Version 3.2)
17.12.2020 (Version 3.1)
IncludeDirItem Eigenschaften, die Verzeichnisse in den Suchergebnissen einbeziehen.IncludeHiddenFiles und IncludeSystemFiles um SearchHiddenFiles und SearchSystemFiles zu finden.TDSFile in TDSResultItem geändert.17.12.2020 (Version 3.0)
ResultList mit einem neuen benutzerdefinierten TDSFile -Objekt. Wenn Sie Ergebnis in Zeichenfolgenliste erzielen möchten, können Sie neue Methoden GetResultStrings verwenden.IncludeHiddenFiles und IncludeSystemFiles Systeme.22.11.2020 (Version 2.0)
Inclusions und Exclusions Eigenschaften.03.10.2020 (Version 1.3)
27.10.2020 (Version 1.2)
26.10.2020 (Version 1.1)
05/03/2020
Wenn Sie Delphi verwenden und mit Dateien und Verzeichnissen arbeiten, müssen Sie irgendwann eine Liste von Dateien in einem Verzeichnis suchen und sogar in Unterdirektorien durchsuchen.
Dies könnte ein wenig schwierig sein, wenn es um alte Funktionen FindFirst und FindNext ist. Jetzt haben wir neue Methoden überlastet TDirectory.GetFiles , erhältlich bei System.IOUtils Unit.
Selbst wenn Sie mithilfe von GetFiles-Methoden einige erweiterte Parameter benötigen, wie beispielsweise Unter-Verzeichnisse, müssen Sie alle Verzeichnisse iterieren. Auch wenn Sie eine Maske angeben möchten, die einen Teil der Pfad -String enthalten, müssen Sie jedes Mal, wenn Sie diese Ressource benötigen, mit Zeichenfolgen in Ihrem Code arbeiten.
Daher habe ich beschlossen, diese Komponente so zu erstellen, dass sie eine einfache Möglichkeit für die Suche nach Dateien werden.
Unterstützt Delphi xe3..delphi 11
Füllen Sie einfach die gewünschten Eigenschaften aus und rufen Sie die Methode Seek .
Anschließend können Sie die öffentliche ResultList lesen, um alle gefundenen Dateien zu erhalten. Diese Liste enthält TDSResultItem -Objekte.
Dir: String = Pfad zur Suche
Inclusions: TStrings = Wenn eine Zeile angegeben ist, sucht die Komponente nur die hier angegebenen Masken gemäß der nachstehend beschriebenen Mask -Syntax.
Exclusions: TStrings = Gleich nach der Überprüfung Inclusions , wenn die Datei mit Exclusions übereinstimmen (gemäß der unten beschriebenen Maskensyntax), wird sie von der Suche ausgeschlossen.
Maskensyntax:
*.txt
myapp.exe
*xyz*.doc
myfile?.rtf
*sub_path*
first_path*
path1path2file.avi
<F>*abc*
Wenn Sie die String
<F>mit einer Maske verwenden, wird sie nur als Dateinamen Teil des Pfades berücksichtigt. Dies ist nützlich, wenn die Maske mit dem Verzeichnisteil verwechselt werden kann.
Beispiel: Nehmen wir an, es gibt einen Pfad C: MyApp. In diesem Ordner befindet sich ein weiterer Ordner C: MyApp Subfilder. In diesem letzten Ordner befindet sich eine Datei namens my_app_file.txt.
Wenn wir also alle Dateien ausschließen müssen, die den Text "App" enthalten, können wir in der Maskeneigenschaft angeben: *app* . In diesem Fall wird auch der Ordner ausgeschlossen, da er mit der Ausdrucks *app* übereinstimmt und davon ausgeht, dass wir dieses Verzeichnis einbeziehen möchten, da es weitere Dateien mit anderen unterschiedlichen Namen gibt. In diesem Fall können wir <F>*app* verwenden. Dies wird nur den Dateinamen -Teil berücksichtigen, wenn die Komponente die Masken überprüft.
Diese Eigenschaften hängen von der ususemask -Eigenschaft ab.
Sorted: Boolean = Wenn aktiviert, werden die Verzeichnisse und Dateien alphabetisch sortiert. (Standard falsch)
SubDir: Boolean = Wenn aktiviert, scannen Dateien in allen Unterdirektorien innerhalb des Suchpfads. (Standard true)
UseMask: Boolean = Wenn aktiviert, werden Inclusions und Exclusions Eigenschaften berücksichtigt. Wenn es deaktiviert ist, wird immer alle Dateien abgerufen. (Standard aktiviert).
IncludeHiddenFiles = Wenn aktiviert, enthält es versteckte Dateien und Ordner (funktioniert nur auf Windows -Plattform).
IncludeSystemFiles = Wenn aktiviert, enthält es Systemdateien und Ordner (nur auf Windows -Plattform).
Wenn Sie ein Verzeichnis suchen, wird das Ergebnis in ResultList -Eigenschaft abgerufen, die TDSResultItem -Objekte enthält. Sie können diese Liste itererieren, um Ergebniseigenschaften zu erhalten.
BaseDir = Verzeichnispfad verwendet zu Beginn der Suche.
RelativeDir = DIRECTORY PATH ohne Basisverzeichnis Präfix.
Name = nur Dateiname Teil.
Size = Dateigröße in Bytes.
Attributes = Dateiattribute (die gleiche wie die Eigenschaft tSearchrec.attr).
Timestamp = Datei Letzte Schreibdatum und Uhrzeit.
IsDir = Wenn das Element ein Verzeichnis ist (es wird nur angezeigt, wenn die Eigenschaft IncludeDirItem ist, wenn die Suche ausgeführt wird).
Wenn Sie nur die Liste der Dateipfad -Zeichenfolgen erhalten möchten, können Sie die Methode GetResultStrings verwenden:
procedure GetResultStrings (S: TStrings; Kind: TDSResultKind); Wo Kind Eigenschaft darstellt:
// Returns bytes in megabytes string format, with two decimal places.
function BytesToMB (X: Int64): string;
// Returns file size in bytes.
function GetFileSize ( const aFileName: string): Int64;
// Returns if an attribute enumerator contains a specific attribute (use System.SysUtils consts: faReadOnly, faHidden, faDirectory...)
function ContainsAttribute (AttributesEnum, Attribute : Integer): Boolean;