[Решено] Форма во внешней DLL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

[Решено] Форма во внешней DLL

Сообщение cepreu » 11.03.2012 17:35:36

Всем привет!!

Нужнен пример вызова формы с внешней DLL

может кто нибудь подкинуть ссылку

или написать как реализовуется
cepreu
новенький
 
Сообщения: 24
Зарегистрирован: 01.05.2007 13:20:15
Откуда: г.Киев

Re: Форма во внешней DLL

Сообщение daesher » 11.03.2012 17:56:12

В общем и в целом, реализуется без каких-либо проблем. Создаётся проект "библиотека", в него добавляется форма, экспортируется процедура, создающая эту форму... А далее - дело техники.
Сложности возникают при попытке передачи "скрытых указателей" (строк и динамических массивов), в этом случае лучше осуществлять передачу простыми указателями, а в библиотеке при необходимости преобразовывать.
Могут возникнуть проблемы (хоть и разрешимые) при необходимости использования классов, определённых в самой библиотеке. Здесь есть 4 пути: надёжный - просто их не использовать напрямую, а только через экспортируемые процедуры, реальный - создав абстрактный класс и там, и там, инициализировав его с помощью процедуры из библиотеки и использовав абстрактные методы в программе, "тупой" - продублировать класс и в библиотеке, и в программе, и интерфейсный.
Последний раз редактировалось daesher 11.03.2012 18:01:03, всего редактировалось 1 раз.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Форма во внешней DLL

Сообщение cepreu » 11.03.2012 18:00:28

Пробовал даже без бередачи параметров

При отображении формы из DLL валится вся програ
cepreu
новенький
 
Сообщения: 24
Зарегистрирован: 01.05.2007 13:20:15
Откуда: г.Киев

Re: Форма во внешней DLL

Сообщение daesher » 11.03.2012 18:03:58

cepreu писал(а):При отображении формы из DLL валится вся програ

Каким образом создавалась форма в dll?

"Сваянная" напрямую программа работает до закрытия формы.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Форма во внешней DLL

Сообщение cepreu » 11.03.2012 18:17:09

Спасибо:
Пример работает:

разница в том что у меня был
в рабочем:
procedure ShowForm;
begin
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.Run;
end;

что был в книге и на просторах нета:
Procedure ShowForm (Appl, Form: THandle);
Begin
// Application.MainForm.Handle := Appl; // раскоментировать для Lazarus
// Application.Handle := Appl; // раскоментировать для Delphi
DllForm := TDllForm.Create(Application);
DLLForm.Show;
end;

Добавлено спустя 7 минут 49 секунд:
Всем спасибо проблема решена :D
cepreu
новенький
 
Сообщения: 24
Зарегистрирован: 01.05.2007 13:20:15
Откуда: г.Киев

Re: [Решено] Форма во внешней DLL

Сообщение Andrew » 13.03.2012 12:43:23

День добрый
решил попробовать работать с фреймами вызываемыми из динамически подключенной библиотеки через интерфейсы, набросал небольшой пример. В принципе библиотека загружается, но ведет себя не совсем понятно.
В Linux - фрейм загружается, данные между основной программой и библиотекой передаются, но при выгрузки библиотеки основное приложение закрывается, в консоли чисто.
В Windows - фрейм не загружается, данные между основной программой и библиотекой передаются,библиотека выгружается, но потом вылетает ошибка обращения к данным.
Наставьте на путь истинный, в чем проблема.
p.s. проверял в AltLinux 6, win xp sp2
lazarus 0.9.31 fpc 2.4.4
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Andrew
новенький
 
Сообщения: 14
Зарегистрирован: 15.01.2008 23:21:26


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 218

Рейтинг@Mail.ru
cron