Главная страница
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.014 c
3-1196807687
Евгений Р.
2007-12-05 01:34
2008.05.11
Редактирование в dbGrid для tIbQuery


2-1207822060
Stepper
2008-04-10 14:07
2008.05.11
Как правельно складывать строки?


2-1208161609
lod
2008-04-14 12:26
2008.05.11
Разбить определёный периуд времени на недели.


2-1207843572
Дмитрий
2008-04-10 20:06
2008.05.11
ActiveX vs. WinAPI (просто)


9-1169896894
maxProg
2007-01-27 14:21
2008.05.11
Direct3D9 - Buffer