FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cargar funcionalidad/modulo externo a programa
Buenas de nuevo!
A vueltas con mi proyecto de fin de carrera, llevo con él más de tres años, pero por motivos de trabajo se le echa poco tiempo. Y el tutor que nunca tiene suficiente me pide una nueva modificación que no sé bien como resolver: El programa tiene diferentes algoritmos para calcular unas probabilidades. Hay un formulario donde se elije el que quieres usar y te da el resultado. Hasta aquí todo OK. Pero resulta que ahora se desea 'escalable', es decir que se puedan añadir nuevos métodos de forma externa (añadidos a los internos o nativos), para así poder añadir métodos en el futuro y comparar resultados. ¿Cómo puede hacerse esto? ¿Compilar cada nuevo método como una dll a parte y en el programa, en una hipótetica opción de 'métodos' añadirlos (las dlls) y que estén disponibles dentro del programa para su seleccion? Disculpad si he dicho una barbaridad, pero es que nunca he hecho nada parecido y no tengo claro como atacar este tema. Un saludo y gracias por vuestra ayuda. |
#2
|
||||
|
||||
Ninguna barbaridad. Yo creo que ese que comentas es el buen camino. Puedes realizar "Addins", que pueden ser BPL's o DLL's que se carguen dinámicamente.
Lo lógico sería que al iniciar la aplicación, por ejemplo, se revisara un directorio de Addins y cargara todos los ficheros DLL o BPL que encuentre ahí. Esos ficheros tendrán que tener una estructura determinada para que el programa pueda reconocerlos. Dentro de ellos tendrás que programar los nuevos "métodos". En los foros hemos hablado otras veces sobre packages y sobre DLL's. También puedes revisar aquí (mirror temporal de mi página) donde puedes encontrar un ejemplo sencillo de cómo programar PlugIns utilizando Packages de Delphi "Sistema de Plug-ins utilizando packages dinámicos" o desde aquí donde está el artículo completo en PDF/ODT y el código de ejemplo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Hola Neftali, muchas gracias por tu ayuda y el tiempo que dedicas a que gente como yo pueda seguir aprendiendo.
He estado estudiando la documentación que has puesto en tu blog sobre el tema y ahora te comento dudas y cuestiones: En mi caso, el plugin creo que debería ser una clase 'Metodo_Calculo', probablemente con un sólo método. La principal duda que tengo es que NO es formulario. Sólo cálculo, no sé si es problema. Luego, por otra parte he visto que hay como dos versiones del proyecto que documentas un 'Delphi_Plugins_Con_Packages_Dinamicos.zip' y otro 'Prototipo1.zip', creo que el primero es más nuevo, pero el segundo es al que parece que hace referencia el documento que escribiste. No he conseguido que compile (uso BDS 2005 con update2) me da el error 'No se encuentra rtl60.bpl'. Procedo abriendo el proyecto con el archivo dpr y activo lo de 'Build with runtime packages'. Seguramente estaré haciendo algo mal? Bueno si puedes, ya me comentas. Gracias y un saludo. |
#4
|
||||
|
||||
Cita:
Cita:
Cita:
En cuanto al error, en el proyecto asegúrate de que tienes marcada la opción "Build with runtime packages" y en las lista de packages que hay bajo la opción anterior elimina los que no tengan sentido (segun la versión que estás utilizando). Un saludo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Cita:
Creo que no me entero de algo... abro el proyecto el 'PlugTest.bdsproj' y compila, pero no aparecen los plugins cargados. ¿Tengo que compilarlos a parte y ponerlos en el directorio '/Addin'? Un saludo. |
#6
|
||||
|
||||
Si.
Compílalos y copialos en ese directorio. Si miras el código del EXE, por defecto los busca en .\Addin
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
|||
|
|||
Cita:
Estoy haciendo: 1. Abro el proyecto. 'Open Project' -> cargo 'PlugTest.bdsproj' 2. Cargo los plugins. 'Open / Delphi packages' y abro los tres 'PT_*.dpk' Pero no puedo compilar: 'Cannot run project unless a host application is defined'... Lo mismo ocurre si abro cada package por separado ¿Cuál es la manera para hacerlo? Gracias. |
#8
|
||||
|
||||
No te preocupes.
Hay un grupo de proyectos que ya tiene configurados el EXE y los packages; Abre el fichero PG.groupproj En ese punto ya te aparece el EXE y los proyectos de los plugIns. Compilalo todo (Project / Build All Projects) Las BPLs de los plugIns, como ya te he dicho deben estar en una carpeta llamada Addin que esté creada en el mismo sitio donde está el EXE.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#9
|
|||
|
|||
Ahora sí.
Muchas gracias y un saludo |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cargar en un TImagen que está en otro modulo | Anunakis | Gráficos | 2 | 11-02-2007 23:56:39 |
programa externo | hugoacosta | API de Windows | 2 | 17-04-2006 19:44:57 |
congelar programa externo. | kalisto | Varios | 8 | 23-06-2005 20:03:10 |
Ejecutar un programa externo desde un programa de Delphi | Roger_Fernandez | Varios | 3 | 02-09-2004 18:05:36 |
Llamar a un programa externo... | superhopi | Varios | 5 | 11-03-2004 17:28:37 |
|