Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизОшибка в TBaseVirtualTree.ScrollIntoView Найти похожие ветки
← →
Erik © (2004-03-08 10:47) [0]Незнаю как отловить эту ошибку, приходит редко и по стеку вызовов ничего неопределиш. Может кто предложит способ ее отловить?
Exception occured at $0056D069 (Module "VirtualTrees", Procedure "TBaseVirtualTree.ScrollIntoView", Unit
"VirtualTrees.pas", Line 27296)
Except frame-dump:
Frame at $0012FE50 (type: efkFinally)
Code at $0043E124
Module "Controls", Procedure "TWinControl.MainWndProc", Unit "", Line 0
Frame at $0012FE5C (type: efkAnyException, handles exception)
Handler at $0043E145
Module "Controls", Procedure "TWinControl.MainWndProc", Unit "", Line 0
← →
Erik © (2004-03-08 12:14) [1]Да, значить никто неработает с VirtualTreeString. Я предпологаю, что такая ошибка может получатся от неправельного обращения к Node. И если Node несужествует то exception. Логически я переписал свой класс, но иногда все равно от пользователей приходят ошибки. Как быть?
← →
jack128 © (2004-03-08 12:20) [2]
> Да, значить никто неработает с VirtualTreeString
Ну я работаю, но такой ошибки не встречал...
И может ты напрямую меняешь поля TVirtualNode(не используя методы дерева)?
← →
Erik © (2004-03-08 13:40) [3]Тоесть напрямую? Этоже просто рекорд. Если ты спрашиваеш не изменяю ли я значения врутрених полей по своему усмотрению, то нет. Я только запоминяю Pointer TVirtualNode в свой масив, а после обращяюсь к нему.
← →
jack128 © (2004-03-08 14:20) [4]>
> Если ты спрашиваеш не изменяю ли я значения врутрених полей
> по своему усмотрению, то нет
угу, именно это я и имел ввиду.
> Я только запоминяю Pointer TVirtualNode в свой масив, а
> после обращяюсь к нему.
А потом где то Node из дерева удаляется и вуаля :-)
← →
jack128 © (2004-03-08 14:21) [5]В OnFreeNode - удаляешь Node из своего массива?
← →
Erik © (2004-03-08 14:35) [6]У меня операции синхронизированны, если происходит удаление из масива, то вызывается перестройка дерева. Масив служит исходным материалом для постройки дерева. В пользовательских данных узла я запоминаю только индекс масива. Если происходит удаление элемента масива, то стирается все дерево и строится заного. Так, что сложно потерять указатель.
← →
jack128 © (2004-03-08 14:58) [7]
> Масив служит исходным материалом для постройки дерева.
Массив Node"ов служит исходными данными для постраения дерева?? Что то не то ;-)
Или это все же массив таких записей
TData = record
UserData: <>;
Node: PVirtualNode; // узел отбражающий эти данные
end;
Зачем те вообще хранить ссылку на узел??
← →
Erik © (2004-03-08 16:10) [8]Для удобства и ускорения работы, ненадо искать какой Node надо удалить. У меня при удалении элемента проставляется статус stDelete. А физически удаляется при сохранении всех данных на форме(сложное это дело связаное с Oracle и HTTP сервером). А вид хранения такой сложися для уневерсальности, раньше я использовал стандартный TreeView. А при таком способе много переписывать непотребовалось.
← →
jack128 © (2004-03-08 16:16) [9]
> У меня операции синхронизированны, если происходит удаление
> из масива, то вызывается перестройка дерева
> Для удобства и ускорения работы, ненадо искать какой Node
> надо удалить.
не кажется несколько протеворечивые фразы?
у меня если изменяется структура данных, то я делаю реинит дерева
← →
Erik © (2004-03-08 16:35) [10]Нет, у меня имеется небольшая неястность с терминалогией. Бывают 2 вида удаление, первое это пометка на удаление. При этом удаляются нужные ветки с использованием указателя на Node. Второе это физическое удаление, поскольку изменяются индексы масива и требуется Tree.Crear и заполнение масива.
← →
jack128 © (2004-03-08 16:51) [11]И что это меняет? Как поставил новую метку на удаление - перевстраивай дерево и все дела. Ну и при физич удалениии тоже, конечно..
← →
Erik © (2004-03-08 17:07) [12]Ничего не меняет, но ошибка гдето есть. В очередной раз переписывать нехочется. Перестройка всего дерева, по любому поводу, както нехорошо. А как отловить ошибку нету идей? Наверника она происходит при пердаче селекта.
← →
jack128 © (2004-03-08 17:40) [13]
> Перестройка всего дерева, по любому поводу, както нехорошо.
>
Почему не хорошо? как раз таки VirtualTree идеально подходит для таких вещей (если, конечно, ты инспользуешь виртуальную парадигму ;-))
> А как отловить ошибку нету идей?
AV? Без исходного кода? Смеёшся :-))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c