Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2010, 18:06   #1
puga555
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 12
По умолчанию Ошибка AV при уничтожении объектов из модулей(dll)

В кратце опишу как устроена программа.

Есть программа с главной формой MDI.К ней подключаются модули (dll), в которых могут быть как объекты, так и формы, назовем их ПМОбъект (Объект из программного модуля). В приложении есть объект ядро, которое загружает модули, создает ПМобъекты, ведет их учет, сообщает ПМобъектам, чтобы те себя уничтожили, и если у программного модуля нет ни одного ПМобъекта, выгружает модуль.

Каждый ПМобъект и ядро имеют интерфейс с одной функцией EXEC(aMessageCode:UINT; aParam:WPARAM; bParam:LPARAM):LPARAM;
Через нее и происходит все взаимодействие ПМобъектов и ядра, по средствам команд и параметров.

При создании ПМобъекта ядро создает объект с различными свойствами этого объекта (например имя, тип) и при его создании ядро получает ссылку на интерфейс для взаимодействия. При создании ПМ объекта формы, создается форма, а форма из модуля создается командой createparented. При необходимости уничтожить ПМобъект ему посылается команда и он выполняет метод self.free. А объект в ядре с его свойствами уничтожается.

Вобщем все как-то работает, но я постоянно нарываюсь на ошибку AV, причем природу этой ошибки понять не могу. Все проверял на более простом приложении, там все работало, щас начался геморой, побороть не могу.

При необходимости могу выслать исходники, если поможете мне, могу даже указать в авторах программы.Собираемся програму регистрировать в ФИПС-е.Очень буду признателен за помощь.

Последний раз редактировалось mihali4; 08.01.2010 в 20:39.
puga555 вне форума Ответить с цитированием
Старый 08.01.2010, 20:49   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
постоянно нарываюсь на ошибку AV, причем природу этой ошибки понять не могу
Осмелюсь предположить, что природа ее кроется в не совсем верном (в каком-то месте) осуществлении процессов создания/уничтожения объектов.
Предлагаю расставить в этих местах точки записи в лог, тогда проще будет локализовать конкретное место в коде.
mihali4 вне форума Ответить с цитированием
Старый 08.01.2010, 21:28   #3
puga555
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 12
По умолчанию

ну с постоянно нарываюсь, я погорячился, простите, писал в сердцах, получаю ее только когда посылаю объектам из модулей команду себя удалить, и они по этой команде выполняют метод self.free. Вообще мне тут сказали что объект не может сам себя удалить, т.е. выполнять такую команду неправильно. Это правда?
puga555 вне форума Ответить с цитированием
Старый 08.01.2010, 21:32   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Простите, без конкретики дать ответ затруднительно.
Приведите сомнительный кусок кода, включающий в себя создание и уничтожение объекта.
Хотя сначала попробуйте обернуть процедуру уничтожения в if exists () then
mihali4 вне форума Ответить с цитированием
Старый 08.01.2010, 22:14   #5
puga555
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 12
По умолчанию

вообще у меня ссылки на объекты из модулей не хранятся, а только на их интерфейс. И если я хочу удалить объект я ему посылаю команду и по ней этот объект выполняет метод self.free. а потом по идее переменной со ссылкой на этот интерфейс присваиваю nil. но вот именно в этот момент и появляется ошибка.

22:37

Загрузил проект. Там используются различные компоненты, вроде как все есть в общем доступе, но если лень искать просто закоментируйте, чего нет, вроде как на работу не должно влиять.Если нужно будет я и компоненты загружу.

У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом.
Модератор
Вложения
Тип файла: rar 01.HOST(060110).rar (4.35 Мб, 19 просмотров)

Последний раз редактировалось mihali4; 08.01.2010 в 22:54.
puga555 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка объектов при помощи DLL Kompuklumba Общие вопросы Delphi 4 06.11.2010 15:20
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36