|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2008, 22:21 | #1 |
Пользователь
Регистрация: 24.04.2008
Сообщений: 53
|
Ищем файлы
Есть код:
procedure ffind(cat:string); //каталог, откуда начать поиск var sea:TSearchRec; res:integer; //результат поиска (0 или нет) begin Application.ProcessMessages; res:=FindFirst(cat+'*.*',faAnyFile, sea); //ищем первый файл res:=findNext(sea);//ищем следующий файл While res=0 do begin if (Sea.Attr=faDirectory) and ((Sea.Name='.')or(Sea.Name='..')) then//чтобы не было файлов . и.. begin Res:=FindNext(sea); Continue;//продолжаем цикл end; if (Sea.Attr=faDirectory) then//если нашли директорию, то ищем файлы в ней begin Ffind(cat+Sea.Name+'\');//рекурсивно вызываем нашу процедуру Res:=FindNext(Sea);//ищем след. файл Continue;//продолжаем цикл end; form1.ListBox1.Items.Add(Sea.Name);//добавляем в Listbox:Tlistbox имя файла Res:=FindNext(Sea);//ищем след. файл end; FindClose(Sea);//освобождаем пересенную поиска end; procedure TForm1.Button1Click(Sender: TObject); begin Ffind(edit1.Text) ; end; как мне подправить его чтоб он искал файлы с определенным расширением?? Изменяю строку res:=FindFirst(cat+'*.*',faAnyFile, sea); на res:=FindFirst(cat+'*.txt',faAnyFil e,sea); ищет только один фаил и на этом поиск прекращается |
02.06.2008, 22:44 | #2 |
Капсула от спама
Форумчанин
Регистрация: 04.03.2008
Сообщений: 779
|
Код:
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг |
02.06.2008, 22:54 | #3 |
Пользователь
Регистрация: 24.04.2008
Сообщений: 53
|
Чето токо у меня теперь не заходит в папки
|
02.06.2008, 23:04 | #4 |
Дон Кихот
Форумчанин
Регистрация: 17.01.2008
Сообщений: 130
|
Код:
|
02.06.2008, 23:12 | #5 |
Пользователь
Регистрация: 24.04.2008
Сообщений: 53
|
('c:\ *.txt',faAnyFile,SR); // через пробел путь и маска
Точно ни че не путаете с пробелом вообще ниче не ищет, а без пробела в каталоги не заходит |
02.06.2008, 23:23 | #6 |
Капсула от спама
Форумчанин
Регистрация: 04.03.2008
Сообщений: 779
|
У меня в программе было
('maps *.map',faAnyFile,SR); // через пробел путь и маска Где рядом папка maps и файлы *.map в ней
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг |
02.06.2008, 23:30 | #7 |
Пользователь
Регистрация: 24.04.2008
Сообщений: 53
|
Всеже я чет не воткнул почему у меня предположем в c:\ ищет файлы, а вот в папках C:\..\..\ не ищет??
|
02.06.2008, 23:46 | #8 |
Delphi Master
Форумчанин Подтвердите свой е-майл
Регистрация: 31.03.2008
Сообщений: 803
|
|
03.06.2008, 00:47 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
не, ребята, ну всё же очевидно, папки, это такие элементы файловой системы.
Указываете в маске расширение, будут искаться файлы и папки только с указанным расширением!!!!!! таким образом, решения принципиальных два: либо искать файлы с заданной маской, а потом искать папки по '*.*' либо, искать нужно всё по '*.*' res:=FindFirst(cat+'*.*',faAnyFile, sea); а потом расширение у файлов проверять дополнительным if'ом: if AnsiUpperCase(ExtractFileExt(sea.Na me))='.MAP' then begin {обработка файла с расширением MAP} end; и, кстати, найденные директории лучше проверять не на сравнение с faDirectory а так: if (sea.Attr and faDirectory)<>0 then begin тогда найдутся и те директории, у который стоит аттрибут скрытые/системные и прочая... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
два вредных вопроса:про асю и прикриплёные файлы файлы | steck | Свободное общение | 3 | 17.06.2007 14:53 |