![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск папок [D7, XP, 2003]
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]
Второй параметр должен быть МАСКОЙ