Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

обход дерева(Delphi) останов и продолжение

имеется сл. вопрос (Delphi)
что такое рекурсивный обход дерева каталогов думаю объяснять глупо
а вот как его остановить (с выходом из программы) а потом продолжить
после запуска - это вопрос. Вроде все сохраняю (Searchrec) в файл,
потом гружу - не выходит. Хелп...

Номер выпуска : 3860
Возраст листа : 441 (дней)
Количество подписчиков : 509
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/276360
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Павел Звягинцев Mon, 6 Dec 2004 01:04:08 +0300 (#276360)

 

Ответы:

Здравствуйте, Павел.

Что-то мне подсказывает, что так просто остановить его с возможностью
последующего продолжения не получится, если только это действительно
рекурсия.
Дело в том, что когда процедура вызывает саму себя в рекурсии, то пути
возврата записываются в стек, чтобы потом возвращаться тем же путём.
Если процесс прерывается, то стек очищается. Причём прерываться же он
должен как раз таки последовательным выходом из всех вложенных
процедур.

Есть два способа:

1. Либо не делать выход, а запустить внутри процедуру, которая в
каком-то цикле будет запускать Idle. С одной стороны можно будет
сделать что-нибудь другое, а с другой стороны, по определённому
условию можно закончить этот цикл и вернуться к рекурсии. Но есть
большое поле для ошибки: если за время простоя что-нибудь изменится в
структуре дерева, то может появиться ошибка.

2. Можно отказаться от рекурсии. Сначала (может и рекурсивно) загнать
в массив все пути по дереву. А потом в обычном цикле их проходить.
Когда надо прерваться, просто запоминаешь номер, на котором
остановились.

Ответить   Andrey Yakushev Tue, 7 Dec 2004 09:45:59 +0300 (#276799)

 

сделал всетаки сам, сто пива мне в мочки и кран на одно место

нужно - поделюсь

с ув. Павел

Номер выпуска : 3881
Возраст листа : 449 (дней)
Количество подписчиков : 513
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/280614
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Павел Звягинцев Wed, 8 Dec 2004 00:32:08 +0300 (#280614)

 

можно попробовать использовать адрес родительской директории "..", а
так же придётся сохранять последнюю обработанную директорию при
переходе уровнем выше -- чтобы избежать зацикливания и продолжить
обработку следующей директории в родительском каталоге..
тогда для проболжения перебора после остановки достаточно получить
последний обработанный путь..
но это лишь неиспробованная идея!

Номер выпуска : 3864
Возраст листа : 442 (дней)
Количество подписчиков : 510
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/276812
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Tue, 7 Dec 2004 13:11:48 +0300 (#276812)

 

Здравствуйте, _ser_oviont.

Вы писали 7 декабря 2004 г., 16:11:48:

Между прочем под windows ".." не всегда срабатывает, есть там не
хорошая директория System Volume Inajhvftion. Судя по всему там эта
метка просто отсутствует.
Если уже есть путь к текущей директории, то проще воспользоваться
ExtractFilePatch Для директории возврощает родительскую директорию.

Ответить   Wed, 8 Dec 2004 06:41:02 +0600 (#277059)

 

От: "Павел Звягинцев" <pasha_***@m*****.ru>
Отправлено: 6 декабря 2004 г. 1:04
Тема: обход дерева(Delphi) останов и продолжение

По-видимому, нужно сохранять весь объект как ресурс

Ответить   "Surin B.P." Tue, 7 Dec 2004 11:47:02 +0300 (#280615)

 

Здравствуйте, Surin B.P.

сделал таки сам
нужно - поделюсь

с ув. Павел

Номер выпуска : 3883
Возраст листа : 451 (дней)
Количество подписчиков : 514
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/281364
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Павел Звягинцев Wed, 15 Dec 2004 22:15:47 +0300 (#281364)