![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Beltar |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Делаю компонент, содержащий формочку для показа справочников баз данных, чтобы не делать одно и то же в разных проектах. Таблицы содержаться в коллекции, точнее включены в элемент коллекции типа TListTable (всего 4 класса):
У TListTable
Т. е. получаю владельца коллекции (сам компонент) и прошу таблицу уведомлять его о своей смерти. Сам Notification:
Метод GetOwner просто:
Проблема в том, что при удалении таблицы Notification не вызывается, таблица остается на месте и при попытке обращения AV. Что не так? Это сообщение отредактировал(а) Beltar - 27.12.2006, 21:09 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||||
|
|||||||||
| Fedia |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 8 Всего: 13 |
Есть подозрение, что (Self.Collection as TTables).GetOwner у тебя не является объектом типа TAvgClassifierForm. В этом случае на строчке:
Таблица уничтожается, но поскольку TAvgClassifierForm.Notification не сработал и соответственно из коллекции элемент, ссылающийся на уничтоженную таблицу не был удален, то при обращении к этому элементу и получается AV. Может тебе пример и не нужен, но вот простой вариант, в котором Notification срабатывает:
-------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||||
|
|||||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Оказывается я забыл указать, что Notification у моего компонента д/б перекрытым. Если честно, попадаюсь на этом 2-й раз. Как-то раз я забыл перекрыть у компонента деструктор и потом только после проверки на утечки увидел, что код деструктора просто не генерировался.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |