Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Ошибка в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.049 c
9-1062240307
TButton
2003-08-30 14:45
2004.03.28
doCollision


14-1077729489
Натуся
2004-02-25 20:18
2004.03.28
Бесплатный хостинг с PHP


7-1073473649
Seldon
2004-01-07 14:07
2004.03.28
Язык системы


14-1077777849
sea
2004-02-26 09:44
2004.03.28
Нужно откомпилять прогу под Unix


14-1077767094
Думкин
2004-02-26 06:44
2004.03.28
С днем рождения! 26 февраля.