Главная страница
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.016 c
2-1208196577
Nemeziz
2008-04-14 22:09
2008.05.11
Формирование строки в файле


2-1208157567
Костик
2008-04-14 11:19
2008.05.11
Как экзэшнику скопировать себя?....


3-1196861574
Леонид
2007-12-05 16:32
2008.05.11
Delphi и MS SQL


15-1206973787
MASTAFA
2008-03-31 18:29
2008.05.11
Помогите с asm 16 перевести на 32 таких два небольших кусочка


3-1196844514
em240
2007-12-05 11:48
2008.05.11
MsSql+Job+обработка ошибки