Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.11;
Скачать: CL | DM;

Вниз

Поиск файлов по нескольким маскам и подкаталогам   Найти похожие ветки 

 
Rhammer ©   (2008-04-11 16:36) [0]

Столкнулся с данной проблемой. Мне нужно осуществить поиск файлов по нескольким маскам а точнее *.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, я скачал но так и не разобрался в нем. Подскажите пожалуйста как осуществить это


 
clickmaker ©   (2008-04-11 16:43) [1]

FileListBox


 
Palladin ©   (2008-04-11 16:44) [2]

по одной маске умеешь, а головы не несколько не хватает?


 
<code>   (2008-04-11 16:53) [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;


А что бы по нескольким каталогам - надо сделать что бы функция сама себя вызывала - рекурсивно.


 
clickmaker ©   (2008-04-11 17:00) [4]


> [3]   (11.04.08 16:53)

MatchesMask() не проще?


 
Rhammer ©   (2008-04-11 17:09) [5]


> Palladin ©   (11.04.08 16:44) [2]
> по одной маске умеешь, а головы не несколько не хватает?
>

Исходник взял в инете, поэтому согласен головы не хватает.


>

Спасибо за помощь



Страницы: 1 вся ветка

Текущий архив: 2008.05.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
8-1179149657
Elliner
2007-05-14 17:34
2008.05.11
Взаимодействие с программой через веб интерфейс


9-1169924801
@!!ex
2007-01-27 22:06
2008.05.11
Метка за пределами экрана.


15-1206343589
Ega23
2008-03-24 10:26
2008.05.11
Возможно ли в Windows получение текущего времени


15-1206907417
rgrgre
2008-03-31 00:03
2008.05.11
Звук и в наушниках и так


15-1206644556
Andy BitOff
2008-03-27 22:02
2008.05.11
Алгоритмы искусственного интеллекта