2010-08-20 5 views
12

Я хочу создать дизайн плагина Delphi. Есть три варианта:
1. DLL
2. BPL
3. COM интерфейс

Каждый вариант имеет некоторые недостатки.Плагин для плагина Delphi

DLL - Promblem with MDI apllication, формы из плагина не могут быть включены в приложение exe-mdi хоста.
BPL - Каждый * .bpl плагин и * .exe хост-приложение должно быть скомпилировано с той же версией Delphi.
COM - Интерфейсы {xxx-xx-xxx-xx} должны быть зарегистрированы в системе, (regsvr). Таким образом, инфраструктура плагина не может быть портативной!

Все ли правда, что я написал выше? Если нет, пожалуйста, поправьте меня, или есть какая-то другая возможность?
спасибо

+0

возможно дубликат [системы плагинов для приложения Delphi -? BPL против DLL] (http://stackoverflow.com/questions/1192734/plugins-system-for-delphi- application-bpl-vs-dll) –

+0

Возможно также дублировать: [Как лучше всего добавить возможности плагина к программе Delphi] (http://stackoverflow.com/questions/365968/how-best-to-add-plugin-capability -to-a-delphi-program) – lkessler

+1

Нельзя регистрировать интерфейсы COM. Если вы знаете, где реализуется DLL-реализация, вы можете загрузить ее и напрямую вызвать ее связанные с COM-функции. Нет необходимости, чтобы ОС выполняла это для вас.И это делает его переносимым в * обоих * смысле слова: вы можете скомпилировать код в других операционных системах, и вы можете поместить программу на USB-накопитель и запускать ее везде, где бы вы ни находились. –

ответ

8

Да, что вы написали правильно. Все это имеет свои преимущества и недостатки, вопрос в том, что важно для вас, вы не сказали, что хотите, поэтому мы не можем сказать вам, как это сделать.

В общем, я бы выбрал BPL по умолчанию, используйте DLL, если вам нужно использовать его из приложений, отличных от Delphi, и выберите COM только в том случае, если вам действительно нужно.

Альтернатива заключается в том, чтобы не создавать свои собственные, поскольку существует несколько плагинов для Delphi.

Кроме того, эта тема уже обсуждалась здесь, почитайте:

1

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

0

Мы используем библиотеки DLL даже в тех случаях, когда используются только приложения Delphi. Формы Dll встроены в основную форму и используют вкладки вместо MDI. Для правильной работы DLL мы также используем диспетчер разделяемой памяти и создаем пакеты времени выполнения: vcl, rtl и собственный пакет.

+0

Да, есть способы обхода ошибки «не могу назначить TFont для TFont», а TFrame из * .dll можно поместить в приложение host * .exe, но есть и другие проблемы с (после нажатия клавиши табуляции фокус не перемещается в следующий элемент управления в кадре ...) Или есть ли какое-то обходное решение для него? – Peter

+0

Также клавиши со стрелками не перехватываются формой, что означает, что элементы управления TEdit и TMemo работают неправильно. – rhody

Смежные вопросы