Обсуждение вопросов, связанных с компанией 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, появится что-то новое, но зато теория и идеи автора останутся. Извинте за резкость. |
Ответить на сообщение » |
|