Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2008, 18:48   #1
Artificial
Пользователь
 
Аватар для Artificial
 
Регистрация: 03.11.2007
Сообщений: 91
По умолчанию Поиск папок

Доброе время суток, надо сделать поиск всех папок на HDD, после чего вывести список.
Сделал поиск папок и их подпапок, но вот дальше не могу сделать.
Принцип такой, программа заходит в папку, смотрит есть ли в н ей папки, если есть то проверяет дальше и записывает, если нет возвращается назад.
Вот код:
Код:
program poisk;
uses crt, dos;
var

     s: string;
     f, f1, f2: text;
     c, i, o, k: integer;
     gid: searchrec;
     m: array[1..100] of string;
     d: array[1..100] of string;
  
procedure mass_sbor;
begin
i:=0;
Reset(f1);
while not EOF(f1) do
                 begin
                        inc(i);
                        readln(f1,d[i]);
                        end;
Close(f1);
for k:=1 to i-1 do begin
ChDir(d[k]);
FindFirst('*.*',anyfile,gid);
writeln(d[k]);
while DosError=0 do begin

Findnext(gid);
if (gid.name <> '.') or (gid.name <> '..') then begin
if gid.attr=16  then begin
                        Append(f2);
                        writeln(f2,d[k],gid.name,'/');
                        close(f2);
                        for o:=1 to high(d[k]) - 1 do begin
                                                        // continue programm
                                                  end;
end;
                    end;
                        end;
                        write('Complete..');
                        end;
end;
procedure sbor;
begin
i:=0;
Reset(f);
while not EOF(f) do
                 begin
                        inc(i);
                        readln(f,m[i]);
                        end;
Close(f);
for o:=1 to i-1 do begin
ChDir(m[o]);
FindFirst('*.*',anyfile,gid);

while DosError=0 do begin

Findnext(gid);
if gid.attr=16 then begin
                        Append(f1);
                        writeln(f1,m[o],'/',gid.name,'/');
                        close(f1);
                    end;
                    end;
                        end;
                        write('Complete..');
                        end;

begin
clrscr;

Assign(f,'C:/paths.txt');
Assign(f1,'C:/dirlist.txt');
Assign(f2,'C:/podkat.txt');
Rewrite(f);
Close(f);
Rewrite(f1);
Close(f1);
Rewrite(f2);
Close(f2);
write('Enter path: ');readln(s);
Chdir(s);
FindFirst('*.*',anyfile,gid);

while DosError=0 do begin
Findnext(gid);
if gid.attr=16  then begin

                        Append(f);
                        writeln(f,s +gid.name);
                        close(f);
                    end;
end;
sbor;
mass_sbor;
readln;
end.
В программе есть лишнее, на это внимание не обращать. Писалось очень быстро.)
Помогите, спасибо!
Сбор подкаталогов третьего уровня немного криво работает)

Последний раз редактировалось Artificial; 16.03.2008 в 18:52.
Artificial вне форума Ответить с цитированием
Старый 16.03.2008, 20:24   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Используй рекурсию:

Код:
procedure findFolders(Path:String);
begin
    N := FindFirst(Path+'*.*',anyfile,gid); 
    while N = 0 do begin  
        if   // Здесь проверяем Если папка и не . и ..
            findFolders(Path+gid.Name+'\')
        end;
        FindNext(gid);
    end;
end;

findFolders('c:\');
alexBlack вне форума Ответить с цитированием
Старый 16.03.2008, 22:30   #3
Artificial
Пользователь
 
Аватар для Artificial
 
Регистрация: 03.11.2007
Сообщений: 91
По умолчанию

Хм, спасибо, попробуем.
Artificial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск файлов и папок FAiver Общие вопросы Delphi 13 09.04.2009 18:01
Проверка папок Gladiator Общие вопросы Delphi 4 29.05.2008 19:48
поиск Папок Dukalis Общие вопросы C/C++ 3 17.01.2008 20:22
Дерево папок Mikola PHP 6 24.11.2007 01:39
копирование папок!!!hELP 80971815772 Общие вопросы C/C++ 1 03.03.2007 23:07