Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выгрузка DLL с модально поднятой формой


Страницы:   1 2

Юрий Зотов ©   (2002-09-23 11:12:00) 

Программа однопоточная, с run-time пакетами (включая пакеты VCL). Есть BPL c объектами O1, O2 и формой F1. Загружена DLL с формой F2 - наследником F1. Метод ShowModal в F1 и в F2 не перекрыт (поскольку пока не ясно, нужно ли это делать и что в нем следует писать).

И есть цепочка вызовов:
O1.Method1-O2.Method2-F2.ShowModal
после которой вся эта цепочка, естественно, оказывается в стеке вызовов, а программа крутится во внутреннем цикле выборки сообщений ShowModal.

В этот момент иногда необходимо выгрузить DLL с F2. Само по себе это не сложно и после соответствующих мер доступность ранее показанных форм нормально восстанавливается, а программа нормально работает (правда, вызов ShowModal не завершен и его результат не получен, но в данном случае это неважно). Однако при завершении программы она делает попытку выйти из стека вызовов, а DLL уже выгружена. С соответствующими Access Violation и прочими чудесами.

Вопрос - есть ли у кого какие-то мысли по этому скорбному поводу? Разумеется, кроме банального гашения в try-except и мыслей типа "а на фига это нужно".

Дополнительная информация.

1. Допускаются любые изменения в BPL, но изменения в DLL весьма нежелательны (потому что таких DLL - порядка полусотни и перепахивать их все как-то очень не хочется).

2. Замена ShowModal на Show решает проблему в корне, но при обычной работе (без выгрузки DLL) программе нужен результат вызова. То есть, функция, а не процедура.


kerk   (2002-09-23 11:24:00) [21]

Обычно при выгрузки ДЛЛ должны уничтожатся все связанные с ней обекты, тогда точно не будет Access Violation.


Юрий Зотов   (2002-09-23 11:17:00) [22]

P.S.
> То есть, функция, а не процедура.

Или эмуляция вызова функции.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо