Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 19
Bauhaus1975 Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 10-11-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #3  
Antiguo 12-11-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 19
Bauhaus1975 Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 12-11-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Bauhaus1975 Ver Mensaje
He estado estudiando la documentación que has puesto en tu blog sobre el tema y ahora te comento dudas y cuestiones:
Dispara!!


Cita:
Empezado por Bauhaus1975 Ver Mensaje
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.
Ningun problema. En lugar de mostrar tu formulario ejecutas el método y listo.


Cita:
Empezado por Bauhaus1975 Ver Mensaje
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?
Hola. Acabo de subir el "Prototipo1" de nuevo; He corregido un ar de cosas, he añadido un package nuevo (plugIn) para probar y he subido en proyecto compilado también en D2009. Bájatelo y testealo.
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.
Responder Con Cita
  #5  
Antiguo 12-11-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 19
Bauhaus1975 Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Hola. Acabo de subir el "Prototipo1" de nuevo; He corregido un ar de cosas, he añadido un package nuevo (plugIn) para probar y he subido en proyecto compilado también en D2009. Bájatelo y testealo.
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.
Excelente. Ya lo he bajado y lo estoy probando.
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.
Responder Con Cita
  #6  
Antiguo 12-11-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #7  
Antiguo 12-11-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 19
Bauhaus1975 Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Si.
Compílalos y copialos en ese directorio. Si miras el código del EXE, por defecto los busca en .\Addin
Jo, perdona de nuevo. Por favor dime cual es el procedimiento para compilar... porque no soy capaz.
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.
Responder Con Cita
  #8  
Antiguo 12-11-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #9  
Antiguo 12-11-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 19
Bauhaus1975 Va por buen camino
Ahora sí.
Muchas gracias y un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 16:16:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi