Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск папок [D7, XP, 2003]


Страницы:   1 2

Steep ©   (2007-10-27 20:53:00) 

что-то никак не соображу как сделать поиск подпапок по заданой папке...
т.е. поиск не файлов в папке или подпапках - а просто вывести название всех подпапок (надеюсь понятно объяснил)

пока единственное что сделал это :

задаю папку например C:\WINDOWS\system32\ в Edit1

procedure LookAll(path, mask: string);
var
 sr: TSearchRec;
begin
 if FindFirst(path {+ '\'} + mask, faAnyFile, sr) = 0 then
 begin
   repeat  
     if faDirectory <> 0 then //папка
     begin
       //пока выводим полный путь
       form1.Memo1.Lines.Add(path + sr.name)
     end;
   until  FindNext(sr) <> 0;
 end;
 FindClose(sr);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 LookAll( Edit1.Text, '..'); //.. - папка
end;

в итоге он находит C:\WINDOWS\system32\WINDOWS
а если писать C:\WINDOWS\system32 то C:\WINDOWS\system32\system32

чето нифига не понимаю....


Германн   (2007-10-28 01:08:00) [21]


> не знаю насколько я верно сделал но вроде рабоает :)
>

Не изящно, да и не совсем верно. Работать будет не всегда.


Steep   (2007-10-28 00:25:00) [22]

вот что получилось....
не знаю насколько я верно сделал но вроде рабоает :)

////////////////// Поиск подпапок   в папке \\\\\\\\\\\\\\\\\\\\\\\\\
procedure LookAll(path, mask: string);
var
 sr: TSearchRec;
 FileAttrs: Integer;
begin
 //Если нет косой черты - добавляем
 if (path <> '') and (path[Length(path)] <> '\') then path := path + '\';

 //Атрибуты
 FileAttrs := faDirectory;

 //Поиск
 if ( FindFirst(path + mask, FileAttrs{faDirectory}, sr) = 0 ) then
 begin  // если найдена папка
   repeat  // повторять
     // делаем с файлом что хотим, обращаясь к нему, как (path + '\' + sr.name)
     if sr.Attr and faDirectory = 16 then //здесь типа директории
     if (sr.name<>'..') and (sr.name<>'.') then
     begin
       form1.Memo1.Lines.Add(path + sr.name);  //Полный путь
       //form1.Memo1.Lines.Add(sr.name); //Название каталога
     end;
   until  FindNext(sr) <> 0; // пока есть ссылка на следующий файл
 end;
 FindClose(sr);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 LookAll( Edit1.Text, '*.*');
end;
//\\\\\\\\\\\\\\\\\\\\\\\\\ Поиск подпапок   в папке  ////////////////


Johnmen   (2007-10-28 00:11:00) [23]

Ага, товарищ думает, что окромя файлов и папок ничего не бывает. Наивный...


Плохиш   (2007-10-27 23:43:00) [24]


>      if faDirectory <> 0 then //папка

Мне понравилось :-))


Anatoly Podgoretsky   (2007-10-27 22:15:00) [25]

У файлов нет аттрибута Directory


Steep   (2007-10-27 22:09:00) [26]

а не все так просто как казалось - а как исключить файлы?


Steep   (2007-10-27 21:25:00) [27]

а все понял .. - это же предыдущий каталог! - ступил :)))
Спасибо вам большое!


Джо   (2007-10-27 21:17:00) [28]

> [2] Steep   (27.10.07 21:14)
> ну да - потому задаю параметр .. - папке же обозначается
> как ..?

Не знаю, как обозначается папке же, однако, в данном случае (любое имя/любое расширение), должна иметь вид *.*


Steep   (2007-10-27 21:14:00) [29]

ну да - потому задаю параметр .. - папке же обозначается как ..?


Anatoly Podgoretsky   (2007-10-27 21:07:00) [30]

> Steep  (27.10.2007 20:53:00)  [0]

Второй параметр должен быть МАСКОЙ


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо