Страница 1 из 1

Поиск файлов

Добавлено: 17 апр 2007, 16:35
Yura_ua
Есть такая вещ:

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

procedure TForm1.List(Path: string);
var
  lpBuf: PChar;          
  sWinDir: string[128]; 
  SearchRec: TSearchRec; 
  begin
  if FindFirst(Path + '<*.расширение>', faAnyFile, SearchRec) =0 then
     begin
                    // добавим имя этого файла в список
          ListBox1.Items.Add(SearchRec.Name);
          // пока в каталоге есть другие файлы
          while (FindNext(SearchRec) = 0) do
              ListBox1.Items.Add(SearchRec.Name);
     end;
   ListBox1.ItemIndex := 0;  
end;
Подскажите, пожалуйста, как сделать чтобы в ListBox добавлялись сразу несколько типов файлов и файлы из подкаталогов?

Re: Поиск файлов

Добавлено: 17 апр 2007, 19:32
Blood_Magic

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

 
procedure TForm1.AddInRes(const dir:string);
var
  sr:TSearchRec;
begin
  if FindFirst(dir+'*', faAnyFile, sr) = 0 then
    begin
      repeat
        if sr.Name[1]<>'.' then
          if sr.Attr and faDirectory <> faDirectory then ListBox1.Items.Add(dir+sr.Name) else AddInRes(dir+sr.Name+'\');
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
end;

я думаю что так наверное

Re: Поиск файлов

Добавлено: 17 апр 2007, 19:37
Blood_Magic
если вызовишь AddInRes('c:\'), то он тебе весь диск с добавит туда, только думать долго будет, если хочешь понаблюдать за процессом, то после ListBox1.Items.Add(dir+sr.Name) поставь Application.ProcessMessages;

Re: Поиск файлов

Добавлено: 17 апр 2007, 22:44
Yura_ua
Blood_Magic писал(а):

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

 
  if FindFirst(dir+'*', faAnyFile, sr) = 0 then
 
Мне надо не все файлы, а именно два типа.

Re: Поиск файлов

Добавлено: 17 апр 2007, 23:41
Blood_Magic
Yura_ua писал(а):Мне надо не все файлы, а именно два типа.
Невозможно. В любом случаи, если ты будешь выбирать даже 1 тип файла, например bmp, то ты папки и подпапки уже не получишь.

Можешь сделать так:

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

 
ext:=Copy(sr.Name,Length(sr.Name)-3,4);
if (ext='.jpg') or (ext='.bmp') then ListBox1.Items.Add(dir+sr.Name);

Re: Поиск файлов

Добавлено: 19 апр 2007, 15:20
Yura_ua
А что есть вместо FindFirst и FindNext?

Re: Поиск файлов

Добавлено: 19 апр 2007, 20:13
Blood_Magic
Yura_ua писал(а):А что есть вместо FindFirst и FindNext?

еще есть F3