Рекурсия в Delphi: Поиск файлов

Рис. 12.4. Рекурсивный алгоритм поиска файлов

Рекурсия в Delphi: Поиск файлов

 Вид диалогового окна программы приведен на рис. 12.5, текст — в листинге 12.3.

Поле Файл (Editl) используется для ввода имени искомого файла или маски (для поиска файлов одного типа). Имя каталога, в котором нужно выполнить поиск, можно ввести непосредственно в поле Папка или выбрать из стандартного диалогового окна Обзор папок, которое появляется в результате щелчка на кнопке Папка. Окно Обзор папок (рис. 12.6) выводит на экран стандартная функция seiectoirectory. Следует обратить внимание, что имя каталога, который используется в диалоговом окне Обзор папок в качестве корневого, должно передаваться функции SelectDirectory как строка whidechar. Для преобразования обычной строки в строку wideChar использована функция StringToWhideChar.

 

Рис. 12.6. Диалоговое окно Обзор папок появляется в результате щелчка на кнопке Папка

 

Основную работу выполняет рекурсивная функция Find. У функции Find один-единственный параметр — структура searchRec, которая используется функциями FindFirst и FindWext для поиска соответственно первого и следующего файла, удовлетворяющего критерию поиска. Следует обратить внимание на то, как осуществляется перебор каталогов в текущем каталоге. Если текущий каталог не корневой, то помимо обычных, то есть имеющих имя, в каталоге есть еще два каталога: .. и ., которые обозначают каталог предыдущего уровня. Эти два каталога не обрабатываются, так как при входе в эти каталоги фактически выполняется выход (переход) в родительский каталог. Если этого не учесть, то программа зациклится.

Листинг 12.3. Программа поиск файлов

dle

Помоги проекту! Расскажи друзьям об этом сайте: