Cryogen2003 Цитата: Если делать через интерфейсы, то как это сделать?
Что такое интерфейс?
-
"узаконенный" контракт - определение типа.
- бинарный
СТАНДАРТ, модуль, написанный на С, PowerBasic, Modula, FreePascal - будет работать как "родной". Ключевое здесь -
стандарт. Извините за повторение, но это "ключ от всех дверей".
А в Delphi он еще и на VMT замечтательно ложиться, что делает Delphi самым крутым инструментом разработки расширений для Windows и [d]COM[+]-based решений.
Интерфейсы желательно описать в IDL - для портируемости.
Тогда другой инструмент, если он умеет с этим(IDL) работать - сгенерирует корректный хидер.
Но это опционально.
Если описывать в другом языке/инструменте интерфейс корректно - совместимо по типам - то можно и руками.
Использование интерфейса дает "типизированный", объектно-ориентированный API.
Иначе будет нагромождение процедур, функций и структур.
А если автор упорный, то спустя некоторое время рождается "велосипед".
Так или иначе.
Хорошо, если придет к процедурно-структурно-соообщательному API как в Windows.
Вполне себе вариант, только многословный очень - букв будет много.
И даже вполне себе в духе ООП, до изобретения интерфейсов.
Вариантов построения гетерогенных систем на самом деле два:
1) процедурно-структурное API - процедуры, структурыб сообщений.
2) OO API, на компонентных технологиях COM(MS)/SOM(IBM)/CORBA(группа товарищей)/XPCOM(Mozilla)
Оба можно подсмотреть в Windows.
Для построения расширяемых программ, можно следует добавить скриптование, но это следующий этап.
Цитата: Да и почитать нужно
Я так, "чик-чик и в продакшен",
Я использовал первоисточники.
Смотрел как устроены Windows и ее компоненты.
Смотрел как устроены программы, которые считал годными.
Смотрел как устроена Delphi и ее компоненты.
Поддержка DesignTime - вполне себе образец.
.\source\ToolsAPI\
Есть и хосты, и сервисы, etc.
Книга "Delphi и технология COM" - must have
Эту книжку собирались писать на четверых, но Акжан и я "слились" под рутиной.
А вот Толик молодец...
из свежака, почитайте серии от GunSmoker
Очччень рекомендую, все правильно написал.
Вот содержимое моей сокровищницы (.\wh.dev\D.common\PlugIns\):
.\!_GunSmoker\
Создаём систему плагинов Разработка системы плагинов в Delphi .\_4ideas\
EMS_<RDBMS>_Manager_Plugins
IBExpert
$dsPluginSystem
AthraSoft-SmartPlugin
.\_comp-dll\
<не интересно>
.\_comp-package\
PACKS.ZIP example of dynamically calling and using packages
throughout your own application.
http://www.global.co.za/~ahm PACKVIEW.ZIP PackView - shows Package required libraries and contained
units. Generates package source code Alex G.Fedorov, 1997
PKGDEMO.ZIP Dynamically loaded package demo (Created 10/29/97, Size 13,217 bytes)
This application and associated package demonstrates how you can
use the packages feature in Delphi 3 to partition your
applications. The example illustrates loading a package and
instantiating a form class from the package. Additionally,
it provides tips onsuccessfully unloading packages.
Demonstration of the following features of packages:
- Dynamically loading a package
- Registering classes from a package
- Instantiating classes registered from a package
http://www.inprise.com/devsupport/delphi/download_files/pkgdemo.zip packages.zip This application is a simple demonstration of the following features of packages:
- Dynamically loading a package
- Registering classes from a package
- Instantiating classes registered from a package
forminbpl.zip
http://delphi.about.com/compute/delphi/library/forminbpl.zip liweipackage.zip
http://www.inprises.com/control/liweipackage.zip dle.zip Dynamic Library Element v.1.0 (03.03.2002) is used to dynamically load packages
and use the components from the packages. This allows to add functionality to software dynamically, without recompiling.
http://sodev.webzdarma.cz/download/dle.zip .\_comp-plugin\
$SmartPlugIn\
$TmsPluginFramework\
names.mx\
http://torry.net/vcl/vcltools/plugins/mxpluginloader170.zip names.psv\
search by PSV-Delphi beacon-Serhiy Perevoznyk
part.LMD\
part.Orcka\
SP(Shell&PlugIn)\
uil - now part TMS\
WFZ\
DelphiPlugins.zip A little tool to use plugins for Delphi programms FWS D3-6
http://delphi.icm.edu.pl/ftp/d30free/DelphiPlugins.zip dplugger.zip
http://delphi.icm.edu.pl/ftp/d20free/dplugger.zip dtPlugins.zip
plugin.zip This sample program shows how to make a plugin for your
own applications.
www.torry.ru/samples.htm PlugIns.rar
ss_000300.zip Code Examples from "Developing Application Plug-ins" at POSK, March 2000.
http://www.richplum.first-web.com/bug/ss_000300.zip tplugin.zip TPlugin v1.0 FWS D3D4D5 By Haran Shivanan.
TPlugin is a native delphi component that makes it easy to make
your application accept pluginsPlugins can be written in any
language, and a single dll can hold multiple plugin
procedures. You can load bitmaps from the plugin dll into your
main app for use in toolbars etc... as well as create menu
items and other User Interface objects easily.A plugin source
code generator has also been provided.
http://www.torry.ru/vcl/vcltools/tplugin.zip <блин, устала рука, извините, надо подробнее - пишите> .\_Package\
Advanced Dynamic Packages\
Application_MainForm in a bpl\
Datamodule in Package Revised\
Designing and Using Dynamic Packages\
Dynamic Packages and COM\
Dynamic packages in Delphi\
Dynamic World of Packages\
Inside D3 Package\
Instancing Package components inside package\
Loading forms from Bpl\
Object Packages Enable Highly Modular App\
PackageDemo\
Run-time packages\
Runtime-Packages Dynamic Menus Sample\
Runtime Packages Adding Functionality and Flexibility to Your Apps\
Runtime_Designtime what_ Delphi Packages.Robs Technology Corner\
The dockside of loading Packages\
Модульная архитектура - Исп-е модулей в D - ORASOURCE.RU\
23096 BPL Plugin with Interfaces and TLS.htm
23096_bpl_plugin_with_interfaces_and_tls.zip
Dynamically Load Cmpnts From Packages at Run-Time.htm
Packages-Retreiving a list of required packages.txt
packages.theDelphiMagazine.46.zip
Something missing about packages.doc
.\_themes\
d2\
d5\
d6\
dc\
DllExamp\
DLLloaders\
ibExpert\
MIDE\
MYDRIVERS.c15\
nsis\
part.Jedi\
plSQLdev\
PlugIn\
PlugIns\
SP\
TPlugin\
UILPL\
WfZ\
XMLSpyPlugIn\
names.MW.MIDE.zip
names.RA.zip
part.AdrenalinX.zip
part.Marathon.sf.zip
part.Py.zip
.\ActionDLL.zip
.\Adding Plug-ins To Your Application.COM.C
.\An Automation Server.COM
.\Creating Extensible App.COM
.\Creating Well-Designed Plug-In's
.\D-Plugin через ActiveX
.\D Plug-Ins
.\Delphi plugin by example
.\DPF (Delphi Plugin Framework).sf
.\Impl a Plug-in Fw.COM.techvanguards
.\Impl Plug-ins
.\Modularizing D App.COM
.\Nitrogen - Plugin DLL Demo - Project Information
.\Omniplugin system
.\Open Applications.VirtualMethods
.\Open4business(APPServicesDLL)
.\Pascal Scripting Plugin Architecture Source Code For dXE8.FMXExpress
.\Plug-In fw using DLL.C
.\Plugins in D
.\Run-time ActiveX.COM
.\The Builder Pattern.DP
.\Using interfaces and actions to create dynamic app
.\Working in the object factory.DP
.\Исп-е DLL в качестве PlugIn-ов
.\Плагины на основе COM интерфейсов.C
.\Пример из D6 и технология COM.book
.\проблема проектирования плагинов доступ к информации об объ.rsdn
.\Программа из кирпичиков, или плагины, плагины и еще раз плагины
.\Создание подключаемой инфраструктуры.NET
.\20021227testplugin.zip
.\MenuPlugin.zip
.\MetaBPL.zip
.\Object-Oriented DLL Interface.txt
.\plugins.html
.\Как работать с плагинами.txt
.\Плагины в Delphi приложениях (com, dll).VALID INFO.html
.\Принцип создания плагинов в D.html
.\seealso.txt
Это все пробовалось, тестировалось, было "взвешено, обмерено и признано" негодным или годным.
Все это в какой-нибудь <awesome> реестр надо, но пока так.