Создание DLL (Различается между Lazarus и Delphi)

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

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

Re: Создание DLL (Различается между Lazarus и Delphi)

Сообщение Sharfik » 13.02.2014 10:46:10

hinst писал(а):конкретно передача экземпляров классов из исполняемого файла в динамическую библиотеку и потом манипуляции с ними работать не будут

Самые распространенные ответы - "Так нельзя", "Так не будет работать". При этом люди не обременяют себя задачей ответить "Почему", "Что надо сделать, чтобы работало".
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Создание DLL (Различается между Lazarus и Delphi)

Сообщение hinst » 13.02.2014 14:15:42

я-то знаю почему

Добавлено спустя 40 секунд:
передача экземпляров классов конкретно из LCL не будет так работать

Добавлено спустя 6 минут 10 секунд:
в LCL используются данные, которые глобальные. И при вызове любого невиртуального метода будет обращение к другим глобальным данным
Самый действенный метод это сделать специальный интерфейс к LCL. Причём если задача конкретная, то только к тем функциям и классам, с которыми планируется работать: например, только основные методы TForm, основные методы TPanel, TButton: назначение текста, задание размера, видимости. И вот через этот интерфейс уже всё и делать, тогда исполняемая копия LCL будет только в основной библиотеке, а в динамической библиотеке с плагином будут вызываться методы той же самой исполняющейся копии LCL через этот интерфейс.... Который, как я говорю, не обязан привязывать всё. Достаточно привязать через него только то, что используется, и только те классы, которые используются, если нужны кнопки, то кнопки, если списки то списки, ну вы поняли; и вот тогда это будет работать правильно и без падений

Добавлено спустя 1 минуту 46 секунд:
и вот таким образом достигается, чтобы копия LCL была только в основной программе, а в плагине обращения к ней. Тогда не будут вылетать ошибки, будет меньше размер библиотеки с плагином, и будут меньше расходы ресурсов и во время исполнения, так как второй копии LCL тогда не будет

Добавлено спустя 1 минуту 12 секунд:
а в перспективе можно было бы как-нибудь сделать чтобы этот динамический интерфейс сразу был, но это уже надо думать как лучше организовать
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Создание DLL (Различается между Lazarus и Delphi)

Сообщение alexs » 13.02.2014 21:38:53

Sharfik писал(а):Лазарус бесполезная среда разработки, если его силами запрещать людям делать ПО к которому требуется прикручивать плагин.
Любая вещь, если не имеет в своем составе идеи модульности, и разбития на простые отдельные составляющие заранее обречена на отсутствие ее развития.

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

ПС
Сейчас любители TC/DC начнут в меня бросать чем нибудь...
ППС
Сам иногда с удовольствием пользуюсь ФАР-ом с дополнительными плагинами...
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание DLL (Различается между Lazarus и Delphi)

Сообщение B4rr4cuda » 20.03.2014 13:14:46

alexs писал(а):Правильно спроектированная программа должна заключать в себе весь функционал, для которого она предназначена.

Спасибо, посмеялся)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Создание DLL (Различается между Lazarus и Delphi)

Сообщение alexs » 20.03.2014 14:33:26

B4rr4cuda
Хоть одну настоящую причину.
Слова - типа так круто - не принимаются.
Также отмазки по размазыванию функционала для комерческой продажи части прграммы.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Создание DLL (Различается между Lazarus и Delphi)

Сообщение Alex2013 » 13.05.2014 11:04:03

1 ) А почему не пробовал использовать "Работающие DDL" из дельфи ?
Классы предавать в параметрах и результате действительно не стоит ..
А обычные типы вполне кушает ...
2 ) "Громоздкий LCL " можно вообще не использовать в DLL
или использовать заменители типа КОЛ
3) Вместо DLL можно использовать "полноформатные" EXE --плагины иногда это даже удобнее т.к. плагин работает полностью автономно а обмен данными наладить не проблема даже в фоновом режиме . (Чуть больший размер инсталляции лихо компенсирует в разы большая надежность и
полное отсутствие проблем совместимости )
Alex2013
долгожитель
 
Сообщения: 3145
Зарегистрирован: 03.04.2013 11:59:44

Пред.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru