Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск файлов по маскам выбранным в CheckListBox'е

5.9K
30 апреля 2007 года
Eksell
49 / / 16.11.2005
Всем доброго времени суток уважаемые жители форума CodeNet!
Помогите пожалуйста решить задачу.
Значит дело обстоит так...:

Я пытаюсь написать прогу которая должна искать на диске файлы по маске... Маска выберается из списка в CheckListBox'е... Т.е. проблема в CheckListBox... там одновременно можно выбрать несколько масок для поиска... Можно добовлять дополнительные маски... и удалять имеющиеся. Я использую для этого следующую функцию:

Код:
procedure LookDir(StartDir, Mask : String; List : TStrings);
var
  SearchRec : TSearchRec;
begin
  if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
  if FindFirst(StartDir+'*.*', faAnyFile, SearchRec) = 0 then
  begin
    repeat
      if (SearchRec.Attr and faDirectory) <> faDirectory then
      begin
        if ExtractFileExt(StartDir+SearchRec.Name) = Mask then List.Add(StartDir+SearchRec.Name);
      end
      else
        if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
        begin
          LookDir(StartDir + SearchRec.Name + '\', Mask, List);
        end;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
end;


Как проверить выбранные маски и начать поиск тех которые были выбраны (поочередно)... используя эту процедуру?

Помогите пожалуйста кто знает.
Спасибо заранее!
10
30 апреля 2007 года
Freeman
3.2K / / 06.03.2004
В чём проблема? Или ты описал не ту задачу, или... ошибка в ДНК.
5.9K
01 мая 2007 года
Eksell
49 / / 16.11.2005
Цитата: Freeman
В чём проблема? Или ты описал не ту задачу, или... ошибка в ДНК.



Я вроде все понятно обьяснил...
Значит есть на форме CheckListBox. В нем я буду выбирать тот тип файлов которые я хочу найти на диске... Например я выбераю такие маски - *.txt, *.bmp... Как начать поиск только тех масок которые были выбраны в CheckListBox... используя эту процедуру?

Код:
procedure LookDir(StartDir, Mask : String; List : TStrings);
var
  SearchRec : TSearchRec;
begin
  if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
  if FindFirst(StartDir+'*.*', faAnyFile, SearchRec) = 0 then
  begin
    repeat
      if (SearchRec.Attr and faDirectory) <> faDirectory then
      begin
        if ExtractFileExt(StartDir+SearchRec.Name) = Mask then List.Add(StartDir+SearchRec.Name);
      end
      else
        if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
        begin
          LookDir(StartDir + SearchRec.Name + '\', Mask, List);
        end;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
end;
10
01 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: Eksell
Значит есть на форме CheckListBox. В нем я буду выбирать тот тип файлов которые я хочу найти на диске... Например я выбераю такие маски - *.txt, *.bmp... Как начать поиск только тех масок которые были выбраны в CheckListBox... используя эту процедуру?


Продолжаем играть дурачка? Параметр Mask не говорит сам за себя?

5.9K
01 мая 2007 года
Eksell
49 / / 16.11.2005
Цитата: Freeman
Продолжаем играть дурачка? Параметр Mask не говорит сам за себя?



Или ты не понял что я имел ввиду или ты просто такой чел......

А имел ввиду я вот это:

 
Код:
Var
  i: Integer;
begin
  ListBox1.Clear;
  for i:=0 to CheckListBox1.Items.Count-1 do
  if CheckListBox1.Checked then
     begin
       LookDir('C:\temp\',CheckListBox1.Items, ListBox1.Items);
     end;


...
10
02 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: Eksell
А имел ввиду я вот это:


Операция перпрошивки ДНК отменяется. ;) Вопрос был слишком простым, чтобы получать по нему подсказку. Программирование - во многом самостоятельный поиск решений.

303
02 мая 2007 года
makbeth
1.0K / / 25.11.2004
Eksell, фигасе... ты для каждого типа файла вызываешь поиск?!!! :) А если в каждой папке по 5-10 вложенных папок и уровней вложенности 5-8? Мда...
Hint: Маску поиска можно задавать и перечислением типов файлов: "*.bmp;*.doc" ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог