![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
![]()
Всем привет!
Есть некое бездонное нечто: Код:
У объекта есть переключатель, переменная Container которая являт собой признак способности этого объекта содержать в себе другие объекты. Если True, TTreeItem имеет право хранить другие TTreItem. Задача: Мне нужно рекурсивно обойти это дерево и найти что-то, когда что-то найдено, вернуть это в переменную и прекратить поиск. Для этого написал функцию FindByID: Код:
Проверяем себя, Если контеинер, то цикл по внутренним элементам. Если нашли элемент, то возврат его в переменную, и выход из функции. Проблема в том, что код работает. И под отладчиком я точно прихожу к моменту когда функция дает результат(возврат совпадения в переменную и выход), однако затем, на следующие X нажатий F8, отладчик скачет по предпоследнему end; и затем передает управление программе. В итоге алгоритм отработал вроде бы верно, но функция вернула False, и нужный код не отработал. В чем ошибка? Может есть более эффективный метод поиска в таких деревьях? Последний раз редактировалось Человек_Борща; 04.07.2014 в 02:51. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
![]()
А так?
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 04.07.2014 в 03:06. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
![]()
Работает. Чудно однако... из-за одного Break'а
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Мне тоже Break не понравился....
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#5 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,799
|
![]()
Угу, низ я бы записал так:
Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
![]()
Так оно с Break'ом не работает
![]() |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А здесь без разницы. В исходном коде не работало потому, что Result забыли присвоить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение дерева неизвесной глубины из БД | Человек_Борща | БД в Delphi | 4 | 03.06.2014 07:16 |
обход прошитого дерева | fergus2010 | Общие вопросы Delphi | 6 | 23.01.2014 23:00 |
Обход дерева | mohita | C# (си шарп) | 1 | 11.12.2011 19:48 |
Обход двоичного дерева | F1nk | Помощь студентам | 0 | 03.06.2010 17:51 |
обход дерева | ribka | Помощь студентам | 2 | 11.12.2007 20:38 |