Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.01.2009, 22:23
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Вопрос Странное поведение DLL

Добрый вечер, есть проблемка: имеется базовое приложение, тестовое приложение, и DLL-библиотека из которой вызывается форма работающая с несколькими Эдитами и реестром.
Так вот, когда я компилю DLLку и подцепляю ее к тестовому приложению - все работает нормально без всяких побочных эффектов.
Но стоит мне абсолютно аналогичным образом подцепить эту же DLLку к базовому приложению то при вызове этой форму (таким же образом как и в тестовом приложении) выводится пустая форма ... мало того ... при закрытии всего базового приложения выкидавает еще и кучу ошибок ...
Подскажите, плиз ... где и что я мог пропустить ???

P.S. И в базовом и в тестовом приложении Uses одинаковы, названия и метод вызова процедур создания формы из DLL тоже одинаковый.
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #2  
Старый 29.01.2009, 22:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это тебе скорее всего просто везло в тестовом приложении.
Дело в том, что при работе с ДЛЛ память надо выделять и освобождать в одном и том же модуле. И родителя при создании этой форме не надо ставить.

Т.е. что делаем:
1. Функция, возвращающая форму. в какой-нить переменной уровня модуля записывается указатель на класс вызовом типа: MyForm := TMyForm.Create(Nil);
2. Функция освобождения формы (тоже экспортируется из ДЛЛ) уничтожает созданный объект: FreeAndNil(MyForm).

Тогда должно заработать нормально.
Ответить с цитированием
  #3  
Старый 29.01.2009, 22:49
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

1. Форма показалась и в базовом приложении ... пасибо Imikle
2. Ошибка при завершении базового приложения так и осталась ((
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #4  
Старый 29.01.2009, 23:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо смотреть глубже.
Напиши подробнее ошибку.
Скорее всего она связана с попыткой удалить уже удаленный объект. Точно у формы нету ни Parent'а, ни Owner'а?
Ответить с цитированием
  #5  
Старый 29.01.2009, 23:31
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию Вот исходник DLL

Обьявление процедур в приложении:
Код:
var
procedure CreateSettForm; stdcall; External 'SettDLL.dll';
procedure CloseSettForm; stdcall; External 'SettDLL.dll';

Использование процедур:
Код:
CreateSettForm;
CloseSettForm;
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 16.08.2009 в 16:39.
Ответить с цитированием
  #6  
Старый 30.01.2009, 00:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Как форма создается в ДЛЛ?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025