![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Добрый вечер, есть проблемка: имеется базовое приложение, тестовое приложение, и DLL-библиотека из которой вызывается форма работающая с несколькими Эдитами и реестром.
Так вот, когда я компилю DLLку и подцепляю ее к тестовому приложению - все работает нормально без всяких побочных эффектов. Но стоит мне абсолютно аналогичным образом подцепить эту же DLLку к базовому приложению то при вызове этой форму (таким же образом как и в тестовом приложении) выводится пустая форма ![]() Подскажите, плиз ... где и что я мог пропустить ??? P.S. И в базовом и в тестовом приложении Uses одинаковы, названия и метод вызова процедур создания формы из DLL тоже одинаковый. Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#2
|
|||
|
|||
![]() Это тебе скорее всего просто везло в тестовом приложении.
Дело в том, что при работе с ДЛЛ память надо выделять и освобождать в одном и том же модуле. И родителя при создании этой форме не надо ставить. Т.е. что делаем: 1. Функция, возвращающая форму. в какой-нить переменной уровня модуля записывается указатель на класс вызовом типа: MyForm := TMyForm.Create(Nil); 2. Функция освобождения формы (тоже экспортируется из ДЛЛ) уничтожает созданный объект: FreeAndNil(MyForm). Тогда должно заработать нормально. |
#3
|
||||
|
||||
![]() 1. Форма показалась и в базовом приложении ... пасибо Imikle
2. Ошибка при завершении базового приложения так и осталась (( Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#4
|
|||
|
|||
![]() Надо смотреть глубже.
Напиши подробнее ошибку. Скорее всего она связана с попыткой удалить уже удаленный объект. Точно у формы нету ни Parent'а, ни Owner'а? |
#5
|
||||
|
||||
![]() Обьявление процедур в приложении:
Код:
var procedure CreateSettForm; stdcall; External 'SettDLL.dll'; procedure CloseSettForm; stdcall; External 'SettDLL.dll'; Использование процедур: Код:
CreateSettForm; CloseSettForm; Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 16.08.2009 в 16:39. |
#6
|
|||
|
|||
![]() Как форма создается в ДЛЛ?
|