![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola a todos!!
¡¡Tema muy interesante!! Quizás el problema que nos encontramos cuando empezamos a ver el potencial de las BPLs es imaginar que esto funciona como los plugins que vemos en navegadores o en aplicaciones webs, por ejemplo un plugin de prestashop, donde lo instalas y de golpe añade un montón de funcionalidades nuevas a cualquier parte de la aplicación web y claro no es tan fácil ... Aquí dejo un enlace a un ejemplo de "PLUGIN" externo, que inserta un menú al formulario principal de la aplicación. Si se quieren usar varios "plugins" habría que aplicar un método de combinación de los menús de los distintos plugins para crear un único menú principal. Aunque con las BPL se puede conseguir cosas interesantes, me he encontrado con limitaciones importantes que después de darle muchas vueltas, aun intento ver como solucionar. Uno de estos temas pendientes, por si alguien puede dar una solución es como utilizar las variables "globales" guardadas en las BPLs. En el ejemplo que he subido, la variable "dato" de la unidad plugins, es una de estas variables globales, la comparte la aplicación, y el plugin externo, pero en realidad en memoria son dos variables totalmente distintas, una para la aplicación y otra para el plugin, por que cuando el form del plugin modifica o guarda ese dato, la aplicación lo que lee es otra cosa totalmente distinta. A esto creo que es lo que se refiere oscarac: Cita:
|
|
#2
|
||||
|
||||
|
Cita:
Tal y como tienes planteado el ejemplo, tienes definida la variable Dato en el "plugin base" (plugins.pas). Esto hace que la compilación te funcione correctamente, pero es lógico que al cargar el plugin en ejecución y crear el formulario esa variable quede vacía. Estás accedeiendo realmente a otra posición de memoria. Creo que es mucho más fácil que eso; Ya que tienes montada toda la estructura para cargar los plugins, crear los formularios y mantenerlos. Pues utilizala para guardar la información que necesites. Desde el programa principal tienes una lista que almacenas plugins Creados/Cargados (ListBPL). Y además ya tienes creada una estructura que almacena datos (TPluginInfo) para cada pluging. Utilizala para almacenar lo que necesites y no tendrás problemas en acceder a esa información. Te adjunto el ejemplo con una líneas modificadas para explicar lo que quiero decir.
__________________
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
|
|||
|
|||
|
Cita:
He estado haciendo pruebas y el tema que veo es que los Packages que se cargan de forma automática (estaticos) en el proyecto van a un bloque de memoria y los que se cargan de forma dinámica van a otro bloque de memoria distinta, entonces si un mismo package, en mi caso la unidad plugins.pas, se utiliza de ambas formas tanto en paquetes estáticos como dinámicos, en realidad hay dos instancia totalmente distintas de estos datos, y cuando intentan interactuar entre ellos no se ven. En las distintas pruebas que he estado haciendo dentro de los paquetes cargados de la misma manera, sean dinámicamente o estáticamente y siempre que no se mezclen esos paquetes, entonces parece que las variables "globales" si que se pueden compartirse sin problemas. El tema de utilizar estas variables globales es por ejemplo, el caso mas básico, un paquete con las conexiones de acceso a la base de datos, que lo va a utilizar el resto de paquetes:
Seguiré haciendo mas pruebas para verificar que no hace cosas extrañas Gracias a todos por la ayuda!! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Creacion de Indices en ejecucion | javicho_villa | Impresión | 1 | 29-09-2005 06:27:21 |
| Problemas con creacion de obj en ejecucion | mbcito | OOP | 4 | 21-01-2005 18:18:12 |
| Creacion de formulario en ejecucion | Remp | OOP | 5 | 22-04-2004 19:14:15 |
| Creación de tabla en tiempo de ejecución | sledgehammer | Conexión con bases de datos | 3 | 16-09-2003 15:08:01 |
| Creacion de componente en tiempo de ejecución | cone220 | OOP | 1 | 16-09-2003 03:47:16 |
|