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

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

Проблемы с формой из runtime-пакета [D6]


Суслик ©   (2005-09-07 17:49:00) 

Исходники, поясняющие вопрос, расположены тут http://www.webfile.ru/505476.

Есть проект Client. Который посредством runtime-пакета PlugAncestor загружает функцией LoadPackage пакет Plug.

Пакет Plug поставляет форму-плугин.

Проект Client создает форму-плугин. При этом Owner у формы = nil.

После создания формы-плугина возбуждается исключительная ситуация, которая в обработчике Application.OnException приводит к закрытию формы.

При этом главная форма Client'а принудительно уничтожает форму плугин и выгружает Plug функцией UnloadPackage.

Если запустить Client и нажать последовательно (сверху вниз) на 3 кнопки, то в итоге в конце програмы будет Access Violation.

Буду крайне признателен, если кто-то ответит, почему происходит AV и что я не так делаю?


Суслик   (2005-09-07 18:50:00) [1]

Я вроде разобрался с проблемой.

Нужно
либо
  после fPlug.Close() делать Application.ProcessMessages()
Либо
  fPlug.Close() заменить на fPlug.Free()

Дело в особенностях реализации Close - вызывается Release, который посылает сообщение, которое в исходном моем коде не успевает обработаться.


Суслик   (2005-09-07 18:50:00) [2]

А... этта

Спасибо Акуличеву. Большое.


Суслик   (2005-09-07 17:50:00) [3]

Виноват. Правильный адрес такой:

http://www.webfile.ru/505476

(т.е. без точки на конце)


Наверх

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