![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужен алгоритм.
cinol © (2006-06-06 06:43:00)Здравствуйте.
Нужно создать дерево папок (как в проводнике) произвольной "вложенности", относительно заданной.
Вот чет не могу сообразить как это сделать.
Zeqfreed (2006-06-07 09:36:00) [1]
> а если в подкаталогах есть еще подкаталоги? Глубина вложенности
> не определена.
И их тоже обойдет, и все-все-все обойдет.
cinol (2006-06-07 09:31:00) [2]
> http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=1015254946&n=19
Спасибо, вечером попробую переписать на пхп.
> обойдет все подкаталоги указанной директории.
а если в подкаталогах есть еще подкаталоги? Глубина вложенности не определена.
Zeqfreed (2006-06-07 09:07:00) [3]Алгоритм, собственно, такой: функция на входе получает имя директории, получает список файлов и папок в ней и вызывает саму себя для всех каталогов кроме «.» (текущий каталог) и «..» (каталог уровнем выше). Таким образом рекурсивно она обойдет все подкаталоги указанной директории.
MBo (2006-06-07 08:43:00) [4]http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=1015254946&n=19
cinol (2006-06-07 07:51:00) [5]
function readdir($dir)//считывает все файлы в папке в массив $files
///////////////////////////////////////////////////////////////////////////////////////////////
function isdir($files)
foreach ($files as $value) //$files массив возвращенный функ. readdir
{if(is_dir($value)) //если папка
{readdir($value); //считаем файлы в ней
isdir($value);} //<-это и есть рекурсия?
}
в таком случае дерево папок получается не правильное.
если в директории не одна папка.
находит первую папку, в ней то-же первую, в ней ...и т.д.
второй, третьеи и др. папок нет.
Не хватает фантазии, как сделать правильно?,Есть какие нибудь мысли?
Loginov Dmitry (2006-06-06 11:19:00) [6]Крайне полезный пример рекурсии :)
function A(I: Integer): Integer;
begin
Inc(I);
Result := I;
if I > 100 then
Exit
else
Result := A(I);
end;
cinol (2006-06-06 10:59:00) [7]
> Это когда функция сама себя вызывает неопределенное число
> раз.
Да наверно. Как это делается? Можно простенький пример?
Loginov Dmitry (2006-06-06 10:33:00) [8]Это когда функция сама себя вызывает неопределенное число раз.
cinol (2006-06-06 09:52:00) [9]
> Рекурсия?
не знаю, что это такое?
з.ы. я новичек.
Loginov Dmitry (2006-06-06 08:56:00) [10]Рекурсия?
cinol (2006-06-06 07:35:00) [11]из того что нашел в сети мне ничто не нравится.
cinol (2006-06-06 07:33:00) [12]To PZ
Дело в том что это не в проге будет использоваться, это на пхп будет карта сайта.
Поэтому я прошу алгоритм.Готовые компоненты мне не подойдут.
PZ (2006-06-06 07:11:00) [13]ShellTreeView