Поиск файлов по расширению

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! Подскажите, может кто уже сталкивался, как проще реализовать поиск файла с любым именем по расширению doc например, если заранее не известно сколько дисков есть в системе? Т.е. процесс должен включать в себя определение имен дисков в системе по которым будет осуществляться поиск. Реализация нужна без участия пользователя. Т.е он нажал кнопку найти - и прога выдала ему где лежат файлы с этим расширением. Заранее благодарен!
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Нашел решение:

Код: Выделить всё

 
procedure TForm1.FindFile(Dir:String);
Var SR:TSearchRec;
    FindRes:Integer;
begin
FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);
While FindRes=0 do
   begin
      if ((SR.Attr and faDirectory)=faDirectory) and
      ((SR.Name='.')or(SR.Name='..')) then
         begin
            FindRes:=FindNext(SR);
            Continue;
         end;

      // если найден каталог, то
      if ((SR.Attr and faDirectory)=faDirectory) then 
         begin
            // входим в процедуру поиска с параметрами текущего каталога +
            // каталог, что мы нашли
            FindFile(Dir+SR.Name+'\'); 
            FindRes:=FindNext(SR);
            // после осмотра вложенного каталога мы продолжаем поиск
            // в этом каталоге
            Continue; // продолжить цикл
         end;

      if (extractfileext(sr.Name)='.doc') then //сюда дописываем нужные нам расширения через OR

      ListBox1.Items.Add(SR.Name);
      FindRes:=FindNext(SR);
   end;
FindClose(SR);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear; // очистка списка файлов
FindFile(Edit1.Text); // поиск файлов с начальными условиями, заданных в Edit1
end;

А определить диски может стандартная компонента DriveComboBox
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить