Конференция "Micro Focus/Borland"

Обсуждение вопросов, связанных с компанией Micro Focus/Borland, ее продуктами CaliberRM, CaliberRDM, SilkTest, StarTeam, TeamDefine, Together и других.

 
 
Добавить сообщение »

Тема: Обсуждение материала "Принцип создания плагинов в Delphi"

Иногда нужные мысли приходят после того, как программа сдана заказчику. Для этого придумали плагины. Плагин - это простая dll библиотека, в которой обязательно присутствует ряд процедур и функций, которые выполняют определенные разработчиком действия

Автор:  lightforever Дата: 15.04.2014 14:58
помойму это делается как то так [открыть ссылку]
Ответить на сообщение »
 
Автор:  Николай Дата: 01.07.2011 23:49
КАК НЕНУЖНО ПИСАТЬ ПЛАГИНЫ НА ДЕЛФИ.
По порядку.
1). У программы и dll собственные менеджеры памяти, которые ничего не знают друг о друге.
Это решается включением в проект ShareMem, т.к. иначе String (AnsiString), динамические массивы и прочие динамические структуры нельзя передавать туда-сюда.
В Данной статье для строк использовали PChar - это хорошо! Но далее мы видем страшное! В библиотеку передаются объекты! Одному богу известно, что у вас с кучей произойдет если вы будете менять скажем на канве TFont.
И тут мы плавно перешли ко второй страшной штуке!

2). RTTI. Как нам известно тип обьекта определяется по адресу таблицы динамических методов. Т. К. библиотека таскает с собой собственную реализацию классов, то соответственно и служебные структуры у нее свои. В данной статье класс обьекта с которым работает плагин задается статически. Т.К. сигнатуры класса совпадают то никаких проблем вроде нет, но вот если мы попробуем динамическиое приведение типов, тут и начнутся ексцепшены с кастингом. Самые частые ошибки вылазят на формах и касаются TFont, т.к. VCL где может работает с TObject-ом и не может его правильно кастануть на совсем неведомый ему TFont который живет в совсем другом сегменте кода.

Решения тут Три.
Или собирать библиотеки и екзешник с рантайм-пакетами (но тогда все должно быть собрано в одной версии компилятора!).
Или сериализовать/десериализовать данные в буффера и потом их восстанавливать.
Или использовать интерфейсы. Последний вариант самый приемлемый! полностью реализовывать Com-интерфейсы не нужно. Сборка мусора происходит автоматически и в нужной куче.
Библиотеки вообще можно реализовывать на левых языках которые про RTTI ни сном, ни духом! Главное, чтоб соглашения о візовах соблюдались.
Ответить на сообщение »
 
Автор:  Andrey Дата: 12.05.2008 21:17
Достали,
Эта статья не о плагинах а о подключении dll и возможности использования ресурсов в dll.
Взяли бы и привели пример из своей практики.
Дело в том что проблема палгинов это написание приложения с возможностью его дальнейшего расширения, а не как подключить dll. Этих статей уже много в айнете.
Автор скажет: а вот это уже дело прораммиста, но вот ЭТО самое интересное.
Завтра не будет технологии dll, появится что-то новое, но зато теория и идеи автора останутся.
Извинте за резкость.
Ответить на сообщение »
 

Добавить сообщение »
Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/iservices/messages.asp?forumId=587&topicId=541