2010-08-20 18 views
12

Quiero diseñar Delphi plugin framework. Hay tres opciones: 1.
DLL
2. BPL
3. interfaz COM

Cada opción tiene algunas desventajas.Delphi plugin framework

DLL - Promblema con la aplicación MDI, las formas del complemento no pueden ser embebidas a la aplicación exe - mdi del host.
BPL - Todos los plugins * .bpl y * .exe deben compilarse con la misma versión de Delphi.
COM - Las interfaces {xxx-xx-xxx-xx} deben estar registradas en el sistema, (regsvr) ¡Así que el marco de plugins no puede ser portátil!

¿Es verdad todo lo que escribí arriba? Si no, por favor corrígeme, ¿o hay alguna otra posibilidad?
gracias

+0

posible duplicado del [sistema de plugins para su aplicación Delphi - BPL vs DLL] (http://stackoverflow.com/questions/1192734/plugins-system-for-delphi- application-bpl-vs-dll) –

+0

También es posible duplicar de: [Cómo se puede agregar la capacidad del complemento a un programa Delphi] (http://stackoverflow.com/questions/365968/how-best-to-add-plugin-capability -to-a-delphi-program) – lkessler

+1

No es necesario que las interfaces COM se registren. Si sabe dónde está la DLL de implementación, puede cargarla y llamar directamente a sus funciones relacionadas con COM. No es necesario que el sistema operativo lo haga por usted.Y eso lo hace portátil en * both * sentido de la palabra: puede compilar el código en otros sistemas operativos, y puede poner el programa en una unidad USB y ejecutarlo donde quiera que vaya. –

Respuesta

8

Sí, lo que ha escrito es correcto. Todos estos tienen ventajas y desventajas, la pregunta es qué es importante para usted, usted no dijo lo que quiere hacer, por lo que no podemos decirle cómo hacerlo.

En general, elegiría BPL por defecto, usaría DLL si necesita usarlo de aplicaciones que no son de Delphi, y elegiría COM solo si realmente tiene que hacerlo.

La alternativa es no crear la suya propia, ya que hay varios marcos de plugins Delphi disponibles.

Además, este tema se ha discutido aquí antes, echa un vistazo a:

1

Otra posibilidad es tener una interfaz de secuencias de comandos, por ejemplo, con Python o Pascalscript. Hay muchas ventajas en este enfoque, y la fuente de los complementos es también el ejecutable, lo que facilita la depuración y el intercambio.

0

Utilizamos DLL, incluso cuando se usa solo con una aplicación Delphi. Los formularios Dll están incrustados en el formulario principal y usan pestañas en lugar de MDI. Para que el DLL funcione correctamente, también usamos un administrador de memoria compartida y construido con paquetes de tiempo de ejecución: vcl, rtl y nuestro propio paquete.

+0

Sí, hay algunas soluciones alternativas para pasar baypass por el error "no se puede asignar TFont a TFont" y TFrame desde * .dll se puede colocar en la aplicación host * .exe, pero hay algunos otros problemas con ordenación de pestañas con TFrame embebido, (después de presionar la tecla de tabulación, el foco no se mueve al siguiente control en el marco ...) ¿O hay alguna solución para ello también? – Peter

+0

Además, las teclas de flecha no son interceptadas por el formulario, lo que significa que los controles TEdit y TMemo no funcionan correctamente. – rhody