Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11625
Последний выпуск: 19.06.2015

Плагины к программам

5
26 июня 2008 года
George
4.1K / / 05.01.2007
ИМХО тема не раскрыта. Я перерыл довольно много инфы в тырнете на эту тему, узнал несколько способов. Но почему-то везде есть какие-то недостатки. И хотелось бы в этой теме узнать кто и как реализовывает сабж.

Я делал плагины с помощью 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
статьи по теме.

Вообщем выкладывайте свои метОды.
14
27 июня 2008 года
Phodopus
3.3K / / 19.06.2008
Как bpl, так и COM - это те же dll
5
27 июня 2008 года
George
4.1K / / 05.01.2007
это понятно. насчет ком не знаю, а вот в предложенных мной статьях описывается разница между пакетами и обычными библиотеками
272
28 июня 2008 года
makbeth
1.0K / / 25.11.2004
Пользовался bpl + интерфейсы (не COM!). Минус при использвании bpl - приходится таскать с осн. программой основные run-time библиотеки (vcl*.bpl, rtl*.bpl и т.д.). А они не совсем маленькие. Правда основной код программы (да и плагинов) получается десятки килобайт.
14
30 июня 2008 года
Phodopus
3.3K / / 19.06.2008
Из недостатков пакетов могу назвать то что их можно изготовить лишь в той же среде что и программа (Delphi/Builder), достоинства - общий менеджер памяти, отсутствие дублирующего кода. Соответственно dll можно написать на любом языке который поддерживает их создание и используемую нотацию вызовов. Да и глянь на большинство софтверных продуктов - майкрософт старается юзать ком (оно и понятно), разработчики попроще - dll. Пакетов лично я еще не видел.. Хотя может плохо смотрел :)
5
30 июня 2008 года
George
4.1K / / 05.01.2007
я прихожу к мысли, что вариант Makbeth наиболее удобный. Хотя наверное, смотря в каких целях.
Вот например стоит такая задача (это конечно уже плагинами не назовёшь, хотя...): есть программа, надо разбить её на отдельные модули, каждый из которых будет отвечать за определённую функцию проги. Можно сделать так, что некоторые модули будут необязательны (то есть уже как плагины). Зачем это делать? Удобнее делать обновление или патч к примеру.
DLL не есть хорошо, т.к. нужно чтобы модуль содержал форму. Пакеты содержат слишком пухлые из-за VCL. Как по-вашему лучше реализовать модульность программы?
14
01 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: Washington
... Как по-вашему лучше реализовать модульность программы?



Если в ближайшем будущем сторонних разработчиков модулей к этой программе не предвидится - тогда конечно почему бы и не bpl !

Цитата: Washington
DLL не есть хорошо, т.к. нужно чтобы модуль содержал форму



а в чем, собственно, проблема? dll спокойно вмещает в себя форму :)

Просмотрел, наконец-то, предложенные статьи :)
Насчет размеров длл - не согласен - все копилировать только с включенной опцией run-time packages - результат как у bpl, да и возможности тоже.
Насчет экспортируемых функций - да, надо написать, но достаточно одной, предоставляющей коммуникационный интерфейс (запись). Модуль коммуникационного интерфейса с пустой секцией initialization не добавит к размеру обоих частей существенного объема (если граммотно написать - то вообще кроме имени модуля ничего не добавит)
То что там написано про формы (лишняя кнопка..) я проходил в одном проекте - все решаемо, главное знать что ставить Owner и что - Parent. Ну а если при выгрузке dll в памяти остаются ссылки на формы... Вообще мне интересно что произойдет при выгрузке пакета... Обработку таких ситуаций (если они возможны) нужно закладывать в логику программы!

5
01 июля 2008 года
George
4.1K / / 05.01.2007
вмещать то вмещает, но это не есть хорошо, потому что получается наглое повторение кода и большой вес. Так что я всё ж склоняюсь в сторону пакетов
272
01 июля 2008 года
makbeth
1.0K / / 25.11.2004
Цитата: Phodopus
Насчет размеров длл - не согласен - все копилировать только с включенной опцией run-time packages - результат как у bpl, да и возможности тоже.


Угу. И еще ко всему прочему на "чистой" машине понадобятся эти самые run-time packages (3+ лишних мегабайт в файлах *.bpl) ;)

Цитата:
Ну а если при выгрузке dll в памяти остаются ссылки на формы... Вообще мне интересно что произойдет при выгрузке пакета...


Да ничего интересного... Просто при обращении по ссылке выскочит старый добрый AV :)

14
02 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: makbeth
Угу. И еще ко всему прочему на "чистой" машине понадобятся эти самые run-time packages (3+ лишних мегабайт в файлах *.bpl) ;)



Также как и в случае использования пакетов :)

Цитата: makbeth
Да ничего интересного... Просто при обращении по ссылке выскочит старый добрый AV :)



Тоесть в этом плане они (bpl и dll), как и предполагалось, эквивалентны

5
03 июля 2008 года
George
4.1K / / 05.01.2007
Цитата: Phodopus
Также как и в случае использования пакетов :)


да, но при использовании длл у тебся ещё и библиотеки ко всему прочему валяться будут.

14
03 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: Washington
да, но при использовании длл у тебся ещё и библиотеки ко всему прочему валяться будут.



а при использовании пакетов - дополнительные пакеты!

или мы друг-друга немного не понимаем? :)

5
04 июля 2008 года
George
4.1K / / 05.01.2007
действительно. я чтото об этом не подумал. Так всё же - библиотеки или пакеты? Или ты хочешь сказать, что вообще разницы нет?
272
05 июля 2008 года
makbeth
1.0K / / 25.11.2004
Разница в том, что в случае с пакетами ты получишь уже практически готовой фреймворк для работы с плагинами (останется только реализовать динамическую загрузку/выгрузку и интерфейсы классов), а при использовании DLL все придется делать сначала, к тому же встает проблема с раздельными менеджерами памяти, что практически на корню губит использование родного строкового типа Delphi.
Собственно, а чего спорим, коль уж bpl на двоичном уровне - все те же DLL? :)
14
07 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Не-не-не, при использовании dll-ок скомпилированных "with runtime packages" менеджер памяти будет общим и единственным.
А я, например, ни с кем не спорил, я вносил ясность :)
Я просто показываю что хорош любой способ, но под конкретную задачу какой-то, вполне возможно, окажется предпочтительнее. Из этого и надо исходить. А вообще пора уже пробовать а не рассуждать :)

П.С. Процитирую себя же
Цитата:
Если в ближайшем будущем сторонних разработчиков модулей к этой программе не предвидится - тогда конечно почему бы и не bpl !

230
07 июля 2008 года
ahilles
1.5K / / 03.11.2005
моё ИМХО. я бы использовал DLL, в параметрах, которые будут использоватся в экспортируемых функциях DLL, использовал бы минимум "чисто дельфийских" типов. Таким образом плагин к моей программе можно будет без проблем написать на любом языке.
P.S. и вообще я сам всегда стараюсь использовать в своих программах минимум "чисто дельфийского".
5
08 июля 2008 года
George
4.1K / / 05.01.2007
Ну, скажем сторонних разрабов модулей к моей проге не предвидится, так как модули я хочу сделать в основном для обновления -> буду юзать пакеты.
14
08 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Да, я также считаю что в таком случае пакеты предпочтительнее

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог