| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > что-то происходит с экземплярами класса в списке |
| Автор: ragzovskii 19.12.2009, 22:38 | ||
Доброго времени суток.
процедура generateTree работает с некоторыми списками, в которых ищет корневые вершины дерева, и раскрывает их по порядку с помощью процедуры explodeNode. ошибка возникает в методе NameTree. на втором проходе, node.Text='' и метод StrToInt отваливается. Если этот метод не вызывать, то дерево заполняется так, как надо, но в названиях вершин стоят ID (издержки метода generateTree). дебаггер показывает, что со списком nodeList творится черт знает что: если метод ExplodeNode вызывается более, чем 2 раза, то в списке NodeList значения полей уже созданных экземпляров содержат неправильные данные. Если вместо node:=TResource(node.GetNext) написать node:=TResource(node.GetNextSibling), то компилятор не может скомпилировать юнит, который к этим двум вообще никакого отношения не имеет. что самое интересное: этот код работал корректно. есть какие-нибудь идеи? |
| Автор: dvamaster 22.12.2009, 07:38 | ||||
| судя по всему TResource наследник TTreeNode тогда собственные поля в TResource будут отсутствовать в памяти (не выделены), и будут писаться непонятно куда! при добавлении создавай TResource и используй AddNode а если это совершенно иной класс то тем более работать не может!!! в этом случае используй AddChildObject где аргумент Ptr есть объект TResource
доступ к TResource
при уничтожении дерева не забудь деструктировать все TResource |
| Автор: ragzovskii 24.12.2009, 20:03 |
| Действительно! я совсем забыл, что использую не перегруженные методы. Спасибо Правда я уже полностью переписал этот код, но на будущее пригодится. |