Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
4-1188799846
Nikfel
2007-09-03 10:10
2008.05.11
Вызов меню проводника для файла, папки.


15-1206598832
@!!ex
2008-03-27 09:20
2008.05.11
автоматический вход в систему и подключение инета


15-1206401988
Поп Гапон
2008-03-25 02:39
2008.05.11
Перегнать строку в Unicode, зная ее LangID


4-1188724269
Rusya
2007-09-02 13:11
2008.05.11
Пункт в меню "Создать"


6-1184809041
Дмитрий Белькевич
2007-07-19 05:37
2008.05.11
Сниффер траффика IdTCPServer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский