Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > [Исходники][Delphi][Пример] Вывод списка всех файлов из каталога |
Автор: THandle 8.4.2008, 09:53 | ||||||||||||||||||||||
Задание. Вывести список всех файлов, находящихся в заданной папке и её поддиректориях. Решение.
Объяснение.
Dir - каталог из которого нужно вывести имена файлов. Strings - список, в который будут добавлены имена всех файлов.
Если список для имен файлов не создан или строка с директорией является пустой, то выходим из процедуры.
Если в конце строки преданной в Dir нет бэкслеша, то добавляем его.
Ищем любой файл, если находим, то продолжаем работу процедуры, иначе - конец. В цикле repeat...until делаем следующее:
Если что-то нашли, то:
Если найдена директория, то рекурсивно проводим поиск в ней, вызвав LstFilesInDirectory с соответствующими параметрами, иначе добавляем имя файла в список:
Если больше ничего не найдено, то завершаем процедуру. Пример вызова. На форме находятся следующие компоненты: TButton - по нажатию кнопки и делаем вызов нашей процедуры. TEdit - сюда вписываем путь к папке в которой надо производить поиск (например C:). TListBox - сюда выводим имена файлов.
|
Автор: Qu1nt 8.4.2008, 10:30 | ||||||
Чтобы бы избежать [Pascal Warning]:
меняем на
К тому же, я бы добавил в конец процедуры ListFilesInDirectory:
|
Автор: Rennigth 8.4.2008, 11:48 | ||
Плюс я бы объявление процедуры сделал бы так:
зачем строки копировать на право на лево?... ![]() |
Автор: Qu1nt 8.4.2008, 11:53 |
Rennigth, тогда не сработает IncludeTrailingPathDelimiter. |
Автор: THandle 8.4.2008, 11:58 |
Qu1nt, спасибо. Сейчас изменю. FindClose забыл, каюсь. ![]() |
Автор: Rennigth 8.4.2008, 12:08 |
угумс, не заметил... но я в таких случаях доп переменную ввожу. это конечно уже дело каждого ![]() |
Автор: MetalFan 8.4.2008, 12:13 |
ага, так же я бы добавил проверку на Dir <> '', ибо если придет пустышка, то начнется поиск с корня текущего диска... Добавлено через 1 минуту и 38 секунд а еще мне понравился подход, предложенный на sources.ru http://forum.sources.ru/index.php?showtopic=208088 |
Автор: MetalFan 8.4.2008, 14:16 |
как раз, имхо, не вдаваясь в подробности, проще и нагляднее пользоваться тем методом. тогда не будет предусмотрена защита от дурака. простой пример - функция очистки директории. на вход - путь, внутри используется твоя функция. после чего все найденные файлы удаляются. тогда при "случайной" передаче "пустышки" очистим нафиг корень диска... лучше уж элементарную проверку предусмотреть |
Автор: THandle 8.4.2008, 14:22 | ||||
Ну не знаю. Всё равно там то с 2006, а у новичков обычно 7. Пусть будет и тот пример, и этот. Тут к тому же уже ссылка на тот дана. Кому надо - посмотрят.
Ладно. Тут убедил. ![]() ![]() |