Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 734

/ вопрос открыт /

Здравствуйте!
Нужна помощь, в программе использую компонент ElTree (аналог TreeView). В программе несколько раз приходится перестраивать дерево в зависимости от ситуации. Если переходов на другую форму не было строит и очищает компонент без проблем, при возврате с др. формы, выдает ошибку и подвешивает компонент (не раскрывает списки).

Казаков Николай Константинович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Казаков Николай Константинович (статус: 1-ый класс)
Вопрос отправлен: 16 ноября 2010, 10:05
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 15; последнее сообщение — 16 ноября 2010, 17:03; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2010, 10:11 [#1]:

Ошибка в 17-й строке.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

16 ноября 2010, 10:58: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 16 ноября 2010, 11:27 [#2]:

я понял остроту, тогда помогите мануалом, есть где-нибудь описание этого компонента? желательно рускоязычное
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2010, 11:36 [#3]:

Цитата (Казаков Николай Константинович):

я понял остроту

Ни фига ты не понял. "Ошибка в 17-й строке" - это програмитсткий эвфемизм, указывающий оппоненту, что в его вопросе не содержится информации, позволяющей дать хоть какой-то разумный ответ.
Вот ты пишешь:

Цитата (Казаков Николай Константинович):

выдает ошибку и подвешивает компонент

А самого главного не сообщаешь - КАКУЮ ОШИБКУ!(?)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 16 ноября 2010, 11:57 [#4]:

ОШИБКА! ACCESS VIOLATION AT ADDRESS 06BF3675 IN MODULE 'CHECKRIGHT.PGI'. READ OF ADDRESS 00000060. что делать ума не приложу, код перелопатил 1000 раз уже, было бы описание компонента так нет ведь. В инете тож не нашел. мож завалялось у кого )))
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2010, 12:00 [#5]:

Пройдись дебаггером по коду, найди строку, где она возникает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 16 ноября 2010, 12:07 [#6]:

я нашел, ошибка тут
form1.ElTree1.Items.Clear; // Очищаем дерево,
причем как я и описал выше она возникает не всегда
Вадим К

Вадим К (статус: Академик), 16 ноября 2010, 12:20 [#7]:

так пытаетесь очистить с другой формы и в этом случае иногда возникает ошибка?
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2010, 12:29 [#8]:

Цитата (Казаков Николай Константинович):

я нашел, ошибка тут form1.ElTree1.Items.Clear; // Очищаем дерево, причем как я и описал выше она возникает не всегда

Очень похоже, что form1 либо = nil, либо указывает на разрушенный экземпляр класса Tform1. Чтобы это узнать, можно состряпать простую конструкцию:
// Перед Clear:
try
  form1.Tag:= 100500;
except
  ShowMessage('Ёпэрэсэтэ!');
end;
 
form1.ElTree1.Items.Clear; // Очищаем дерево
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 16 ноября 2010, 12:44 [#9]:

не к тому времени когда происходит очищение форма закрыта и и память очищена Free
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2010, 12:58 [#10]:

Цитата (Казаков Николай Константинович):

не к тому времени когда происходит очищение форма закрыта и и память очищена Free

Ну и тогда чего ж ты хочешь от конструкции с участием тухлого указателя?
form1.ElTree1.Items.Clear; // form1 - тухлый указатель
Вполне закономерный access violation.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 16 ноября 2010, 13:28 [#11]:

Очень сомневаюсь, что form1 может быть невалидным указателем в штатных программах. Дело в том, что это обычно (это ключевое слово) главная форма. и если form1 не локальная переменная, то она скорее всего вполне валидная. Но пример от min@y™ вплоне себе хорош. Как минимум отбросит явно невалидные указатели.
Галочка "подтверждения прочтения" - вселенское зло.
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 16 ноября 2010, 13:41 [#12]:

закрыта другая форма 2 читайте внимательнее. Проблема локализована. Компонент не ElTree не хочет Clear если в нем выбран item, мож это связано с фокусом, как-нибудь. То есть если я не щелкаю по компоненту все работает, как только щелкнул, он не очищается
Вадим К

Вадим К (статус: Академик), 16 ноября 2010, 13:50 [#13]:

а не привязано ли к этому компоненту-дереву каких то событий, которые реагируют на смену фокуса, на изменения (on*focus*, on*chanege*, где * - какие то символы)?
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 16 ноября 2010, 13:58 [#14]:

Цитата (Казаков Николай Константинович):

закрыта другая форма 2 читайте внимательнее.

А где это написано?

Цитата (Казаков Николай Константинович):

ElTree не хочет Clear если в нем выбран item, мож это связано с фокусом, как-нибудь

А что мешает продрать дебаггером внутри метода ElTree.Items.Clear()?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 16 ноября 2010, 17:03 [#15]:

Спасибо всем за участие, проблема решилась отказом от компонента ElTree и переходом на стандартный TreeView, не очень изящно )), но тоже метод. Все работает как по маслу. На будущее урок "Не выпендривайся". Тема закрыта.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.03 сек.