Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1077808465
Mentov
2004-02-26 18:14
2004.03.28
Шифрование


1-1078409816
t_vic
2004-03-04 17:16
2004.03.28
Ошибка при выполнении программы


3-1077629735
Desdechado
2004-02-24 16:35
2004.03.28
Странное поведение в TClientDataset


1-1078839959
Term
2004-03-09 16:45
2004.03.28
Как округлить число с точностью до 2-х знаков после запятой?


4-1072870320
intrSV
2003-12-31 14:32
2004.03.28
Кнопка Пуск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский