|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.03.2008, 09:41 | #1 |
Пользователь
Регистрация: 13.07.2007
Сообщений: 60
|
Мне необходимо из определённой директории вывести в мемо все файлы и папки. я делаю это так:
Код:
а если вписать FindFirst(Path +'*.*', faDirectory , SR) то отображаются не все файлы Последний раз редактировалось Stilet; 18.04.2008 в 08:01. |
27.03.2008, 09:52 | #2 |
Форумчанин
Регистрация: 27.12.2006
Сообщений: 955
|
Дак тыж пытаешься Директории(Папки) отразить, а не файлы !
Он захватывает все директории + добавляет еще некоторые файлы. Вопрос к Delphi гуру. Почему? Последний раз редактировалось merax; 27.03.2008 в 10:07. |
17.04.2008, 17:39 | #3 |
Познаю мир
Форумчанин Подтвердите свой е-майл
Регистрация: 05.10.2007
Сообщений: 387
|
Тоже интересует данный вопрос. Почему? получиш работающий код выложив этой теме плиз.
---
|
17.04.2008, 17:59 | #4 |
Дельфист
Форумчанин
Регистрация: 14.08.2007
Сообщений: 317
|
Код:
ICQ-465033557
WINDOWS CE THE BEST |
17.04.2008, 21:23 | #5 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Вот уж никогда бы не подумал, что FindFirst принесет сюрпризы. Всегда вызывал одинаково - faAnyFile, потом в цикле проверка. Вот, примерно, как у vitalik007 и даже не задумывался. После вопроса полез в код VCL. Оказывается, FindFirst вызывает FindFirstFile из WinAPI. А, поскольку, у той не предусмотрена фильтрация, файлы отсеиваются после вызова, но не прямым сравнением с указанными атрибутами, а, наоборот: сначала готовятся исключаемые атрибуты: faSpecial = faHidden or faSysFile or faVolumeID or faDirectory; F.ExcludeAttr := not Attr and faSpecial; если атрибуты очередного файла попадают в ExcludeAttr, файл пропускается вызовом findNextFile. Выводы. Задавая маску атрибутов мы не экономим время, так как вызовы WinAPI делаются для каждого файла каталога всегда. Использовав как маску один из атрибутов faHidden, faSysFile, faVolumeID, faDirectory мы не получим результата, который могли бы ожидать. Так что лучшим вариантом остается вызов с faAnyFile и отбором файлов в цикле. |
|
17.04.2008, 22:27 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Вывести содержимое каталога со всеми подкаталогами... Без рекурсии не обойтись...
Только что давал кому-то вывод в дерево. Вот вывод в ListBox (думаю, что переделать на МЕМО труда не составит): Код:
|
17.04.2008, 23:37 | #7 |
Дельфист
Форумчанин
Регистрация: 14.08.2007
Сообщений: 317
|
FAiver
Используй код как написал mihali4.Это стандартный поиск а Я решил что-нибудь оригинальное придумать
ICQ-465033557
WINDOWS CE THE BEST |
18.04.2008, 08:02 | #8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Чет я не понял в чем сыр-бор. У меня код автора работает на ура.
I'm learning to live...
|
20.04.2008, 11:51 | #9 |
Познаю мир
Форумчанин Подтвердите свой е-майл
Регистрация: 05.10.2007
Сообщений: 387
|
Код михалыча прекрасно работает . Только не пойму одного . если искать по масе "*.*" то ищет все файлы в директории и поддиректории ... а если искать по маске "*.jpg" то ищет только в текущей папке( без подкаталогов .. какю маску поставить чтобы искало к примеру жпеги в подкаталогах тоже?
---
|
20.04.2008, 14:16 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
вам нужно искать по маске *.* а у найденных файлов проверять if UpperCase(ExtractFileExt(Name))='.J PG' then begin <Обработка найденного JPG файла> end; |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
список всех открытых файлов и папок. | Teleport | Общие вопросы Delphi | 4 | 22.06.2008 11:29 |
Поиск папок | Artificial | Помощь студентам | 2 | 16.03.2008 22:30 |
поиск Папок | Dukalis | Общие вопросы C/C++ | 3 | 17.01.2008 20:22 |
Поиск файлов | LeoN | Общие вопросы Delphi | 5 | 25.11.2007 22:54 |
поиск файлов | KORN | Компоненты Delphi | 3 | 12.10.2007 05:42 |