![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск файлов по нескольким маскам и подкаталогам [D7, XP]
Rhammer © (2008-04-11 16:36:00)Столкнулся с данной проблемой. Мне нужно осуществить поиск файлов по нескольким маскам а точнее *.rar *.zip *.7z
Сейчас использую данный алгоритм:
procedure TForm1.Button1Click(Sender: TObject);
Var SR:TSearchRec; // поисковая переменная
FindRes, n :Integer; // переменная для записи результата поиска
begin
ListBox1.Clear; // очистка компонента ListBox1 перед занесением в него списка файлов
n:= 0;
FindRes:=FindFirst(Button2.Caption+Edit1.Text,faAnyFile,SR); // задание условий поиска и начало поиска
While FindRes=0 do // пока мы находим файлы (каталоги), то выполнять цикл
begin
Inc(n);
archives[n]:=SR.Name;
ListBox1.Items.Add(SR.Name); // добавление в список название найденного элемента
FindRes:=FindNext(SR); // продолжение поиска по заданным условиям
end;
FindClose(SR); // закрываем поиск
Label1.Caption:='Количество найденных объектов: ';
Label2.Caption:=IntToStr(n);
end;
Поиск в гугл дал мне инфу о компоненте FileList, я скачал но так и не разобрался в нем. Подскажите пожалуйста как осуществить это
Rhammer (2008-04-11 17:09:00) [1]
> Palladin © (11.04.08 16:44) [2]
> по одной маске умеешь, а головы не несколько не хватает?
>
Исходник взял в инете, поэтому согласен головы не хватает.
>
Спасибо за помощь
clickmaker (2008-04-11 17:00:00) [2]
> [3](11.04.08 16:53)
MatchesMask() не проще?
<code> (2008-04-11 16:53:00) [3]>Мне нужно осуществить поиск файлов по нескольким маскам а точнее *.rar *.zip *.7z
Нужно искать файлы по маске *.*, и потом сравнивать:
begin
Inc(n);
// archives[n]:=SR.Name;
If LowerCase( ExtractFileExt(SR.Name) ) = '.rar' then
ListBox1.Items.Add(SR.Name); // добавление в список название найденного элемента
If LowerCase( ExtractFileExt(SR.Name) ) = '.zip' then
ListBox1.Items.Add(SR.Name); // добавление в список название найденного элемента
If LowerCase( ExtractFileExt(SR.Name) ) = '.7z' then
ListBox1.Items.Add(SR.Name); // добавление в список название найденного элемента
FindRes:=FindNext(SR); // продолжение поиска по заданным условиям
end;
А что бы по нескольким каталогам - надо сделать что бы функция сама себя вызывала - рекурсивно.
Palladin (2008-04-11 16:44:00) [4]по одной маске умеешь, а головы не несколько не хватает?
clickmaker (2008-04-11 16:43:00) [5]FileListBox