Как искать файлы и папки с Delphi

При поиске файлов часто бывает полезно и необходимо искать в подпапках. Здесь посмотрим, как использовать DelphiСила в создании простого, но мощного проекта «найди все подходящие файлы».

Проект поиска маски файла / папки

Следующий проект не только позволяет искать файлы в подпапках, но также позволяет легко определять атрибуты файлов, такие как имя, размер, дата изменения и т. Д. так что вы можете увидеть, когда вызывать диалог свойств файла из проводник Виндоус. В частности, он демонстрирует, как рекурсивно искать в подпапках и собирать список файлов, которые соответствуют определенной маске файла. Техника рекурсии определяется как подпрограмма, которая вызывает себя в середине своего кода.

Чтобы понять код в проекте, мы должны ознакомиться со следующими тремя методами, определенными в модуле SysUtils: FindFirst, FindNext и FindClose.

FindFirst

FindFirst - это вызов инициализации для запуска процедуры детального поиска файла с использованием Вызовы API Windows. Поиск ищет файлы, которые соответствуют спецификатору пути. Путь обычно включает символы подстановки (* и?). Параметр Attr содержит комбинации атрибутов файла для управления поиском. Константы атрибута файла, распознаваемые в Attr:

instagram viewer
faAnyFile (любой файл), faDirectory (директория), faReadOnly (только для чтения файлов), faHidden (скрытые файлы), faArchive (архивные файлы), faSysFile (системные файлы) и faVolumeID (файлы идентификаторов томов).

Если FindFirst находит один или несколько соответствующих файлов, он возвращает 0 (или код ошибки для сбоя, обычно 18) и заполняет Rec информацией о первом соответствующем файле. Чтобы продолжить поиск, мы должны использовать ту же запись TSearcRec и передать ее в функцию FindNext. Когда поиск завершен, процедура FindClose должна быть вызвана для освобождения внутренних ресурсов Windows. TSearchRec - это запись, определяемая как:

Когда первый файл найден, заполняется параметр Rec, и ваш проект может использовать следующие поля (значения).
. атратрибуты файла, как описано выше.
. имя содержит строку, представляющую имя файла, без информации о пути
. Размер в байтах найденного файла.
. Время сохраняет дату и время изменения файла как дату файла.
. FindData содержит дополнительную информацию, такую ​​как время создания файла, время последнего доступа, а также длинные и короткие имена файлов.

Найти следующее

Функция FindNext - это второй шаг в процедуре детального поиска файлов. Вы должны передать ту же запись поиска (Rec), которая была создана при вызове FindFirst. Возвращаемое значение из FindNext равно нулю для успеха или код ошибки для любой ошибки.

FindClose

Эта процедура является обязательным завершающим вызовом для FindFirst / FindNext.

Поиск соответствия рекурсивной маски файла в Delphi

Это проект «Поиск файлов», который отображается во время выполнения. Наиболее важными компонентами в форме являются два поля редактирования, один список, флажок и кнопка. Поля редактирования используются для указания пути, по которому вы хотите искать, и маски файла. Найденные файлы отображаются в поле «Список», и если флажок установлен, то все подпапки сканируются на предмет совпадения файлов.

Ниже приведен небольшой фрагмент кода проекта, чтобы показать, что поиск файлов с помощью Delphi настолько прост, насколько это возможно: