
09/12/2021(バージョン3.5)
03/13/2021(バージョン3.4)
02/01/2021(バージョン3.3)
12/18/2020(バージョン3.2)
12/17/2020(バージョン3.1)
IncludeDirItemプロパティ。IncludeHiddenFiles 、 SearchHiddenFilesおよびSearchSystemFilesへのIncludeSystemFiles 。TDSFile TDSResultItemに変更しました。12/17/2020(バージョン3.0)
ResultList 。文字列リストを取得する場合は、新しいメソッドGetResultStringsを使用できます。IncludeHiddenFilesおよびIncludeSystemFilesプロパティを含む。11/22/2020(バージョン2.0)
InclusionsとExclusionsプロパティ。10/31/2020(バージョン1.3)
10/27/2020(バージョン1.2)
10/26/2020(バージョン1.1)
05/03/2020
Delphiを使用し、ファイルやディレクトリを使用する場合、最終的にはディレクトリ内のファイルのリストを検索して取得する必要があります。
これは、古いFindFirstとFindNext関数を使用して少し難しい場合があります。これで、 System.IOUtilsユニットで入手可能な新しいメソッドTDirectory.GetFilesがあります。
ただし、GetFilesメソッドを使用しても、サブディレクトリのような高度なパラメーターが必要な場合でも、すべてのディレクトリを反復する必要があります。また、パス文字列の一部を含むマスクを指定する場合は、このリソースが必要なときにコード内の文字列を使用する必要があります。
そこで、ファイルを検索する簡単な方法になるために、このコンポーネントを構築することにしました。
Delphi XE3..delphi 11をサポートします
目的のプロパティを入力し、コールメソッドSeek 。
次に、公共の財産ResultListを読み取って、見つかったすべてのファイルを取得できます。このリストには、 TDSResultItemオブジェクトが含まれています。
Dir: String = path to search
Inclusions: TStrings =以下で説明するマスク構文に従って、ここで指定されたマスクのみをコンポーネントが指定している場合、任意の行が指定されている場合、コンポーネントは検索します。
Exclusions: TStrings = Inclusionsチェック直後、ファイルがExclusionsマスクに一致する場合(以下に説明するマスク構文に従って)、検索から除外されます。
マスク構文:
*.txt
myapp.exe
*xyz*.doc
myfile?.rtf
*sub_path*
first_path*
path1path2file.avi
<F>*abc*
マスクを使用して文字列
<F>を使用する場合、パスのファイル名部分のみと見なされます。これは、マスクがディレクトリパーツと混同される可能性がある場合に役立ちます。
例:パスC: MyAppがあると仮定しましょう。このフォルダー内には、別のフォルダーc: myApp subfolderがあります。この最後のフォルダー内には、my_app_file.txtというファイルがあります。
したがって、テキスト「アプリ」を含むすべてのファイルを除外する必要がある場合は、Masksプロパティで指定できます: *app* 。ただし、この場合、式*app*と一致するため、フォルダーも除外され、他の異なる名前の別のファイルがあるため、このディレクトリを含めることを想定しています。この場合、 <F>*app*を使用できます。これは、コンポーネントがマスクをチェックするときにファイル名パーツのみを考慮します。
これらのプロパティは、 USEMASKプロパティが有効になっていることに依存します。
Sorted: Boolean =有効にすると、アルファベット順に並べ替えられたディレクトリとファイルを取得します。 (デフォルトのfalse)
SubDir: Boolean =有効にすると、検索パス内のすべてのサブディレクトリのファイルをスキャンします。 (デフォルトは真)
UseMask: Boolean =有効にすると、 InclusionsとExclusionsプロパティを検討します。無効にした場合、常にすべてのファイルを取得します。 (デフォルトが有効になっています)。
IncludeHiddenFiles =有効にすると、非表示のファイルとフォルダーが含まれます(Windowsプラットフォームでのみ動作します)。
IncludeSystemFiles =有効にすると、システムファイルとフォルダーが含まれます(Windowsプラットフォームでのみ動作します)。
ディレクトリシークを実行すると、結果はTDSResultItemオブジェクトを含むResultListのリストに取得されます。このリストを繰り返して、結果プロパティを取得できます。
BaseDir =検索が開始されたときに使用されるディレクトリパス。
RelativeDir =ベースディレクトリプレフィックスなしのディレクトリパス。
Name =ファイル名のみパーツ。
Size =バイト単位のファイルサイズ。
Attributes =ファイル属性(tsearchRec.attrプロパティと同じ)。
Timestamp =ファイル最後の書き込み日時。
IsDir =アイテムがディレクトリの場合(検索が実行されたときにIncludeDirItemプロパティがtrueである場合にのみ表示されます)。
ファイルパス文字列リストのみを取得する場合は、メソッドGetResultStrings使用できます。
procedure GetResultStrings (S: TStrings; Kind: TDSResultKind); Kindプロパティが表す場所:
// 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;