| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Насшет рекурсии |
| Автор: Ak47black 9.5.2007, 16:46 |
| Вообшем у вопрос связанный с рекурсией. Наверняка все юзали какдато поиск в Regedit.exe, там он осуществляется рекурсией. Как рекурсию сделать мне понятно, а как остановить на какомто месте, а потом возобновить мне непонятно. Тоесть там как происходит: например если элемент найден то поиск останавливается ,а по нажатию F3 он продолжаеться. Я хочю тоже самое. Вопрос : как остановить на какомто месте, а потом возобновить рекурсию. |
| Автор: Romikgy 9.5.2007, 18:07 |
при выполнении условия твоего имхо ссылку сохранять , где остановленно (или полный путь с ключу как в регедите ) имхо |
| Автор: Letov 9.5.2007, 18:10 |
| Например, в реестре создать ссылку на место, где остановился, а потом по ней начинать поиск. Она будет сохраняться и после выхода из программы. |
| Автор: Sunvas 9.5.2007, 18:57 |
| Ak47black, нужно всего лишь грамотно написать процедуру рекурсии - т.е. передавать путь откуда нужно начинать поиск. А далее следуй вышеизложенным постам. |
| Автор: MetalFan 9.5.2007, 18:59 |
| с чего ты взял, что рекурсией? например для древовидной структуры можно реализовать функцию Next( ANode ), которая будет всегда возвращать следующий узел в независимости от структуры дерева(например, как в VirtualTree). т.о. для поиска достаточно вызывать Next, пока не найдешь нужный узел... |
| Автор: Ak47black 9.5.2007, 19:39 |
| Я не с TlistViewом работаю, а напримую с реестром. |
| Автор: MetalFan 9.5.2007, 19:46 |
| Ak47black, какая разница, c чем работаешь? алгоритм можно и для реестра написать... |
| Автор: Ak47black 9.5.2007, 19:50 |
| MetalFan, ну вообше-то да так можно. Шас буду пробовать) |
| Автор: Yanis 9.5.2007, 21:00 |
| Извините, что вот так вот вмешиваюсь в ваш разговор. Я со http://rouse.drkb.ru/files/regfind.zip просто к вам. Примерчик от Розыча |
| Автор: Ak47black 9.5.2007, 21:20 |
| Yanis, я смотрел уже этот пример |
| Автор: Yanis 9.5.2007, 21:31 |
| Не совсем понимаю в чём сложность, что бы запомнить ветку на которой остановились, а потом продолжить поиск от неё? |
| Автор: Ak47black 10.5.2007, 21:30 |
| Yanis, только как это осушествить. Рекурсии непредставляю как ,а при помоши нахождения Next пети скорость очень прохая http://forum.vingrad.ru/forum/topic-150510.html |
| Автор: Ak47black 11.5.2007, 15:35 |
| Ну народ подскажите чтонибудь ато я тут невижу совсем выхода. |
| Автор: Yanis 11.5.2007, 18:40 |
Чем больше тебе подскажут, тем слепее ты будешь. |
| Автор: Ak47black 11.5.2007, 18:46 |
| Ну тут все дело в оптимизации. Два тестовых уже набрал ,но оба очень медлено переберают. 60-32 ms Знал бы хоть в какую сторону делать, то бы сделал уже всё перепробовал. |
| Автор: Yanis 11.5.2007, 18:59 |
| 60 ms это очень быстро даже. |
| Автор: Ak47black 11.5.2007, 19:04 |
| Ну для сравнения Поиск в Regedit.exe примерно 20-30 сек (я имею ввиду полный) Поиск если при помоши моей проги примерно 10-20 мин :( |
| Автор: Yanis 11.5.2007, 19:38 |
| Ak47black, Окстись, что за бред ты несёшь? ms это что? Напиши мне расшифровку. |
| Автор: Ak47black 11.5.2007, 19:54 | ||
Вот так я делаю
Лан создам новцю тему ато тут немного не по названию темы. |
| Автор: MetalFan 11.5.2007, 21:11 |
| вапервых - при каждой итерации вызывать кучу гуевых методов да еще и ProcessMessages - не есть хорошо... основательно будет притормаживать поиск |