Плагины к программам
Я делал плагины с помощью dll. Недостаток - большой вес программы, если к примеру надо форму запихать в плагин. Вроде ещё какие-то минусы были, сейчас подзабыл. Плюсы - так легче всего имхо.
Ещё была статейка насчёт пакетов в Delphi ".bpl". Так вот там тоже вроде не всё просто.
Есть ещё технология COM, про неё увы ничего почти не знаю. Говорят неплохая.
И ещё вот:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=512
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1338
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=274
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=468
статьи по теме.
Вообщем выкладывайте свои метОды.
Вот например стоит такая задача (это конечно уже плагинами не назовёшь, хотя...): есть программа, надо разбить её на отдельные модули, каждый из которых будет отвечать за определённую функцию проги. Можно сделать так, что некоторые модули будут необязательны (то есть уже как плагины). Зачем это делать? Удобнее делать обновление или патч к примеру.
DLL не есть хорошо, т.к. нужно чтобы модуль содержал форму. Пакеты содержат слишком пухлые из-за VCL. Как по-вашему лучше реализовать модульность программы?
Если в ближайшем будущем сторонних разработчиков модулей к этой программе не предвидится - тогда конечно почему бы и не bpl !
а в чем, собственно, проблема? dll спокойно вмещает в себя форму :)
Просмотрел, наконец-то, предложенные статьи :)
Насчет размеров длл - не согласен - все копилировать только с включенной опцией run-time packages - результат как у bpl, да и возможности тоже.
Насчет экспортируемых функций - да, надо написать, но достаточно одной, предоставляющей коммуникационный интерфейс (запись). Модуль коммуникационного интерфейса с пустой секцией initialization не добавит к размеру обоих частей существенного объема (если граммотно написать - то вообще кроме имени модуля ничего не добавит)
То что там написано про формы (лишняя кнопка..) я проходил в одном проекте - все решаемо, главное знать что ставить Owner и что - Parent. Ну а если при выгрузке dll в памяти остаются ссылки на формы... Вообще мне интересно что произойдет при выгрузке пакета... Обработку таких ситуаций (если они возможны) нужно закладывать в логику программы!
Угу. И еще ко всему прочему на "чистой" машине понадобятся эти самые run-time packages (3+ лишних мегабайт в файлах *.bpl) ;)
Да ничего интересного... Просто при обращении по ссылке выскочит старый добрый AV :)
Также как и в случае использования пакетов :)
Тоесть в этом плане они (bpl и dll), как и предполагалось, эквивалентны
да, но при использовании длл у тебся ещё и библиотеки ко всему прочему валяться будут.
а при использовании пакетов - дополнительные пакеты!
или мы друг-друга немного не понимаем? :)
Собственно, а чего спорим, коль уж bpl на двоичном уровне - все те же DLL? :)
А я, например, ни с кем не спорил, я вносил ясность :)
Я просто показываю что хорош любой способ, но под конкретную задачу какой-то, вполне возможно, окажется предпочтительнее. Из этого и надо исходить. А вообще пора уже пробовать а не рассуждать :)
П.С. Процитирую себя же
P.S. и вообще я сам всегда стараюсь использовать в своих программах минимум "чисто дельфийского".