Поиск файлов

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

Ответить
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

Есть такая вещ:

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

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 добавлялись сразу несколько типов файлов и файлы из подкаталогов?
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

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

 
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;

я думаю что так наверное
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

если вызовишь AddInRes('c:\'), то он тебе весь диск с добавит туда, только думать долго будет, если хочешь понаблюдать за процессом, то после ListBox1.Items.Add(dir+sr.Name) поставь Application.ProcessMessages;
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

Blood_Magic писал(а):

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

 
  if FindFirst(dir+'*', faAnyFile, sr) = 0 then
 
Мне надо не все файлы, а именно два типа.
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

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);
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Yura_ua
Сообщения: 63
Зарегистрирован: 07 дек 2006, 17:52

А что есть вместо FindFirst и FindNext?
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

Yura_ua писал(а):А что есть вместо FindFirst и FindNext?

еще есть F3
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Ответить