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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2017, 12:00   #1
Урсула
Пользователь
 
Аватар для Урсула
 
Регистрация: 08.05.2016
Сообщений: 22
По умолчанию Как в DLL освободить переменную объектного типа, не закрывая объект?

Здравствуйте. У меня такое дело: я создаю DLL-библиотеку, которая будет включать в себя форму. В том примере, который я нагуглила, это делается так:
Код:
function ShowForm : Integer; stdcall;
var
        Form : TDLLForm;
begin
        Form := TDLLForm.Create(Application);
        Result := Form.ShowModal;
        Form.Free;
end;
Но я хочу сделать это не через функцию, а через процедуру и писать не
Код:
 Result := Form.ShowModal;
а
Код:
Form.Show;
Но тут приходится избавиться от освобождения переменной: Form.Free;, иначе форма закрывается, не успев возникнуть. Однако, если я так делаю, то когда закрываю программу, возникает конфликт.
Урсула вне форума Ответить с цитированием
Старый 07.04.2017, 12:17   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Но тут приходится избавиться от освобождения переменной: Form.Free;,
Это освобождение не переменной, а объекта(в данном случае формы).
Если вы не хотите его удалять(освобождать), то и не делайте этого.
form.Free;

Чтобы форма сама освобождала занимаемую её память при своем закрытии, в FormClose указывается
ActionClose:=СaFree;
http://www.programmersforum.ru/showt...=caFree&page=3
http://www.programmersforum.ru/showt...ghlight=caFree
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 07.04.2017, 14:21   #3
Урсула
Пользователь
 
Аватар для Урсула
 
Регистрация: 08.05.2016
Сообщений: 22
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение

Чтобы форма сама освобождала занимаемую её память при своем закрытии, в FormClose указывается
ActionClose:=СaFree;
http://www.programmersforum.ru/showt...=caFree&page=3
http://www.programmersforum.ru/showt...ghlight=caFree
Но у меня DLL. Форма тут только дочерняя.
Урсула вне форума Ответить с цитированием
Старый 07.04.2017, 14:42   #4
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

http://www.delphisources.ru/pages/fa..._from_dll.html
http://www.delphi-central.com/formdll.aspx

Последний раз редактировалось Filka; 07.04.2017 в 14:45.
Filka вне форума Ответить с цитированием
Старый 07.04.2017, 15:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Filka, всё хорошо.

есть маленькое замечание.
По первой ссылочке ( https://www.delphisources.ru/pages/f..._from_dll.html )
очень спорный (неполный) код.
сомневаюсь, что он заработает - переменная Form1 нигде не описана.

А вот по второй ссылочке скачивается архив dllform.zip, где всё наглядно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.04.2017, 16:33   #6
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
есть маленькое замечание.
По первой ссылочке ( http://www.delphisources.ru/pages/fa..._from_dll.html )
очень спорный (неполный) код.
сомневаюсь, что он заработает - переменная Form1 нигде не описана.
Согласен... Исправляем ситуацию ...
В исходниках к книге Delphi 5. Руководство разработчика (авторы: Стив Тейксейра, Ксавье Пачеко) есть нормальный пример, который находится в C:\DELPHI5DG\Code\Ch09\ModelessDll (после распаковки по умолчанию).
Filka вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как освободить память от типа Audio? reyn90 Общие вопросы .NET 6 26.12.2015 23:21
Как преобразовать символ string в переменную int-типа Dima-91 C++ Builder 4 16.10.2015 16:56
Как преобразовать переменную типа textfile в string ? 239 Помощь студентам 1 04.11.2011 20:26
Как добавить в TObjectList объект произвольного типа kartalex Общие вопросы Delphi 3 18.11.2010 00:25
Как обьявить переменную типа AnsiString глобально Kocapb Общие вопросы C/C++ 6 19.12.2007 05:05