
12.09.2021 (версия 3.5)
13.03.2021 (версия 3.4)
01.02.2021 (версия 3.3)
18.12.2020 (версия 3.2)
17.12.2020 (версия 3.1)
IncludeDirItem свойство, включающее элементы каталогов в результаты поиска.IncludeHiddenFiles и IncludeSystemFiles в SearchHiddenFiles и SearchSystemFiles .TDSFile на TDSResultItem .17.12.2020 (версия 3.0)
ResultList с использованием нового пользовательского объекта TDSFile. Если вы хотите получить результат в списке строк, вы можете использовать новый метод GetResultStrings .IncludeHiddenFiles и IncludeSystemFiles свойства ystemfiles.22.11.2020 (версия 2.0)
Inclusions и свойства Exclusions .31.10.2020 (версия 1.3)
27.10.2020 (версия 1.2)
26.10.2020 (версия 1.1)
05/03/2020
При использовании Delphi и работы с файлами и каталогами вам нужно искать и получить список файлов в каталоге или даже поиск в файлах в подразделениях.
Это может быть немного сложно с использованием старых функций FindFirst и FindNext . Теперь у нас есть новые методы перегрузки TDirectory.GetFiles , доступные в System.IOUtils .
Но, даже используя методы GetFiles, если вам нужны некоторые расширенные параметры, такие как Subsirectories, вам необходимо будет обработать все каталоги. Кроме того, если вы хотите указать маску, которая включает в себя какую -то часть строки пути, вам нужно будет работать со строками в вашем коде каждый раз, когда вам нужен этот ресурс.
Итак, я решил создать этот компонент, чтобы стать простым способом поиска файлов.
Поддерживает 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 subloder. В этой последней папке есть файл с именем my_app_file.txt.
Таким образом, если нам нужно исключить все файлы, которые содержат приложение «Текст», мы можем указать на свойство Masks: *app* . Но в этом случае папка тоже будет исключена, потому что они соответствуют *app* и предполагая, что мы хотим включить этот каталог, потому что есть другие файлы с другими различными именами. В этом случае мы можем использовать <F>*app* . Это рассмотрит только часть имени файла, когда компонент проверяет маски.
Эти свойства зависит от включения свойства USEMASK .
Sorted: Boolean = Если включено, он будет получать каталоги и файлы алфавитно отсортированы. (по умолчанию false)
SubDir: Boolean = Если включено, он будет сканировать файлы во всех подзадаченных в пути поиска. (по умолчанию правда)
UseMask: Boolean = Если включено, он рассмотрит Inclusions и свойства Exclusions . Если отключить, он будет получать всегда все файлы. (по умолчанию включено).
IncludeHiddenFiles = Если включен, он будет включать скрытые файлы и папки (только на платформе Windows).
IncludeSystemFiles = Если включен, он будет включать системные файлы и папки (только на платформе Windows).
Когда вы запускаете поиск в каталоге, результат будет извлечен в свойство ResultList , которое содержит объекты TDSResultItem . Вы можете указать этот список, чтобы получить свойства результатов.
BaseDir = путь каталога, используемый при начале поиска.
RelativeDir = Путь каталога без префикса базового каталога.
Name = только имя файла.
Size = размер файла в байтах.
Attributes = file attributes (так же, как и свойство tsearchrec.attr).
Timestamp = файл последней даты записи и времени.
IsDir = если элемент является каталогом (появляется только в том случае, если свойство IncludeDirItem верно при выполнении поиска).
Если вы хотите получить только список строк файлов, вы можете использовать метод 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;