Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 21
AFilth Va por buen camino
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:
Código Delphi [-]
SetObjectProp(MiObjeto, 'Propiedad', Valor);

Un saludo y una vez más gracias a todos por vuestra ayuda.
Responder Con Cita
  #2  
Antiguo 07-03-2007
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
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
Responder Con Cita
  #3  
Antiguo 07-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
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
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.
Responder Con Cita
  #4  
Antiguo 07-03-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 21
AFilth Va por buen camino
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
Código Delphi [-]
SetObjectProp(MiObjeto, 'Propiedad', Valor);

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:
Código Delphi [-]
PClaseA= class of ClaseA;
VAR
TClaseN: PClaseA;

y luego:
Código Delphi [-]
initialization
  TClaseN := ClaseA;

La bpl donde está contenida la Clase B (la que era dinámica) hace:

Código Delphi [-]
PClaseB= class of ClaseA;
VAR
TClaseN: PClaseB;

y luego:
Código Delphi [-]
initialization
  TClaseN := ClaseB;

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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
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


La franja horaria es GMT +2. Ahora son las 05:01:32.


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