Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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-03-2011
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
Cómo conseguir paquetes dinámicos y no necesitarlos en DesignTime

Hola a todos!
Me asalta una nueva duda con la carga de paquetes en tiempo de ejecución. He seguido aténtamente este hilo http://www.clubdelphi.com/foros/showthread.php?t=68947
en el que Neftali explicaba de manera sublime los tipos de paquetes que podemos tener en nuestra aplicación.
Estoy desarrollando una aplicación en la que en un futuro esperamos hacerla crecer, por lo que me pareció interesante la carga dinámica de paquetes, así que me puse manos a la obra.
Tras darle varias vueltas, decidí por la opción (como dice el propio Neftali) más potente: BPLs cargados en runtime con la opción "Compile with Runtime Packages". Sencillamente funciona perfectamente.
El problema es que ahora me he dado cuenta que estos objetos (objetos maestros) que iré añadiendo a la aplicación, dependen también de otros objetos (objetos esclavos) que también me gustaría ir añadiéndolos dinámicamente.
Tengo la clase padre de ambos en un paquete en DesignTime, y los objetos maestros los puedo añadir fácilmente, derivando de su clase padre y registrándolos.
Pero éstos utilizan información sobre los objetos esclavos, la cual depende de qué tipo sea el esclavo, por lo que no puede estar en la clase padre de los objetos esclavos.
Por tanto, necesito tener información de ellos en DesignTime, por tanto se linkan estáticamente, por tanto, pierde la gracia hacer todo esto.

¿Me podríais indicar cómo puedo obtener información de estos objetos sin necesidad de tenerlos en DesignTime?
Yo estaba pensando en mantener records en DesignTime, y que al crear los objetos esclavos se le pase al constructor un puntero a dichos records.
El problema es que cualquier modificación en dicha estructura me obligaría a recompilar toda la aplicación...

Un saludo,
LoPiTaL
Responder Con Cita
  #2  
Antiguo 10-03-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Me suena a que necesitas un BPL estático que te sirva de "puente" para tus cargas dinámicas.

Algo de esto se comenta en este enlace, podría servirte.
__________________

Responder Con Cita
  #3  
Antiguo 10-03-2011
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Poder: 16
LoPiTaL Va por buen camino
Gracias por la respuesta.

Lo que se comenta en ese hilo es lo que ya tengo:



Y eso funciona bien.
Ahora mi problema es que necesito que el Maestro hijo X acceda a información de los esclavos hijos Y, y dicha información, como es dependiente del tipo de esclavo que sea, no está en la clase padre.
Vamos quiero hacer esto otro:



Esa comunicación (marcada en rojo) es la que no sé cómo implementar sin caer en linkado estático, salvo añadiendo un BPL por cada esclavo hijo que únicamente contenga un pas con una estructura que sea la que el esclavo espera recibir, y a la que tendría acceso todo el mundo, por lo que este BPL sería estático, y un cambio en dicha estructura me obligaría a recompilar la aplicación.

¿Se os ocurre algo más? ¿Se me escapa algo?

Un saludo,
LoPiTaL
Responder Con Cita
  #4  
Antiguo 10-03-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Desconozco la forma en que podrías tener "comunicación directa" entre dos BPL dinámicos. Lo que yo hago es hacer la comunicación a traves de un BPL Base. Tu podrías utilizar tu módulo maestro o esclavo para tener esa comunicación, pero sería indirecta.

Por eso yo hacía la mención de un BPL "Puente" que te sirva de camino.
__________________

Responder Con Cita
  #5  
Antiguo 10-03-2011
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.285
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
Siguiendo con lo que comenta Contraveneno, entiendo que hay dos formas de acceder a información de otros packages.

El primer problema es saber a qué te refieres con "comunicación"; No es lo mismo acceder a datos, crear objetos definidos en otro paquete, acceder a métodos de clase,...

(1) La forma directa pueder ser utilizando RTTI. Si tu aplicación está compilada con Runtime Packages, como debe ser, puedes utilizar técnicas de RTTI para acceder a determinados datos.

(2) La forma "indirecta" y es la que también uso yo, es la que ha comentado contraveneno. Utilizar una estructura en el package Base o en el programa principal para almacenar cosas que serán accesible por todos los packages.

Por ejemplo, en mi caso, tengo una "lista de Definiciones" en el package Base. Cada package que cargo añade a esa lista (accesible por todos los packages) su objeto definición (que contiene todo lo que los demás necesitan saber de ese package; constructores de clase, definiciones,...)

Una vez cargados los packages, en esa lista están los "objetos definición" de los packages cargados y los que no se han cargado no han añadido su "objeto definición".
__________________
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
  #6  
Antiguo 10-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El problema, hasta donde veo, es que sus clases "maestras" hacen uso de clases "esclavas" específicas por lo que el paquete base tendría que incluir a todas ellas, aún las que no existan en el presente.

Obviamente es poco lo que se puede decir sin mayores datos, pero podría tratarse de un diseño de clases no del todo correcto. Las clases "esclavas" probablemente deberían de poderse acceder de manera genérica y dejar al polimorfismo la distinción de comportamientos.

// Saludos
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
como crear componentes dinamicos sErgis .NET 3 06-06-2011 17:10:05
Componentes con DesignTime y RunTime LoPiTaL OOP 2 26-10-2010 09:11:42
Refresco en formularios creados con paquetes dinamicos andresenlared Varios 1 28-11-2007 23:00:41
Paquetes dinamicos xerkan Varios 14 22-10-2007 16:05:58
Como leer los paquetes que se reciben por el puerto COM rjsitruiz Varios 5 07-08-2004 00:07:10


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


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