![]() |
![]() |
| 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
|
|||
|
|||
|
Muchas gracias por tu extenso comentario Roman, me ha despejado muchas dudas que tenía.
Al final os cuento como solucioné e tema para que quede constancia por si algún día alguien busca algo parecido. Uno de mis problemas era que la propiedad de la ClaseB la tenía definida en Public en vez de en Published por lo que no tenía acceso a ella desde la RTTI. Por otro lado no sabía lo de la directiva de compilación {$M+} por lo que al final hice que la ClaseA heredase de TPersistent aunque ésto lo podría cambiar ahora volviendo a la herencia de TObject y compilando con la directiva que nos ha comentado Roman. Al final no necesite para nada el GetClass, ya que lo único que tenía que hacer era escribir en una de las propiedades de la ClaseB por lo que desde el exterior me basto con hacer un:
Un saludo y una vez más gracias a todos por vuestra ayuda. |
|
#2
|
||||
|
||||
|
Hola AFilth,
Me gustaría que me explicases una cosa. Si no usas GetClass para nada, ¿cómo estás obteniendo MiObjeto? ¿De dónde sale? Tiene que haberse instanciado en algún momento, ¿cómo? // Saludos |
|
#3
|
||||
|
||||
|
Yo también me apunto a eso.
¿Cómo has obtenido la referencia de la clase que hay en el package dinámico?
__________________
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. |
|
#4
|
|||
|
|||
|
Vamos alla con la explicación, lo intentaré lo mejor que pueda aunque es algo que no he implementado yo y lo mismo meto la pata por algún lado...
Por una lado tengo mi proyecto principal, desde donde hago el
Por otro lado tengo una bpl en la que está la ClaseA, esta bpl no se carga dinámicamente. Y finalmente tengo otra bpl que se carga dinámicamente con la ClaseB, esta clase hereda de la ClaseA, ya que en su uses hace referencia a las units de la bpl donde está contenida la ClaseA. Normalmente en la aplicación se cargan objetos de la ClaseA, pero cuando se cumplen una serie de condiciones, se carga la BPL donde está contenida la ClaseB y en vez de crearse los objetos de ClaseA se crean de ClaseB. Bueno, ahora empieza lo difícil, a ver si soy capaz de explicarlo bien... En mi bpl donde está contenida la ClaseA se hace lo siguiente:
y luego:
La bpl donde está contenida la Clase B (la que era dinámica) hace:
y luego:
Luego en todos los Creates y demás métodos, como son override lo que se usa es El TClaseN.Create. Así se consiguen crear objetos de una clase o de otra dependiendo de las circunstancias. Por lo tanto cuando yo, desde mi proyecto principal hago referencia a un objeto, éste puede ser en realidad de ClaseA ó de ClaseB dependiendo de si se cargo la bpl dinámica ó no. Espero haberme explicado más o menos con claridad, aunque no sé yo porque ni yo mismo lo entiendo demasiado bien... Un saludo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Usar una clase que esta dentro de una libreria | lookmydoom | OOP | 3 | 18-04-2006 15:25:34 |
| Obtener el directorio donde está el ejecutable | daly | Varios | 3 | 13-10-2005 19:29:18 |
| Propiedad que me indica si un DBMemo está vacio | gluglu | Varios | 4 | 10-02-2005 16:48:17 |
| Una clase como propiedad de un componente? | setry2 | OOP | 3 | 30-12-2003 21:30:58 |
| Obtener la clase de objetos | Feñiz | OOP | 7 | 08-05-2003 20:21:55 |
|