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 11-02-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Ajaá.. ya voy entendiendo mejor la cuestion esa de "cargar dinámicamente paquetes" aunque en RTTI estoy verde aún.

Cita:
Empezado por roman Ver Mensaje
Lo que puedes es obtener la clase a partir de su nombre con GetClass, tal como lo hace adonias. Pero el moldeo (casting) ¿qué sentido tendría?
Ok.. ya no tiene sentido dicho moldeo en el caso de cargar dinamicamente, pero si no estoy trabajando con carga dinámica, es posible hacer dicho moldeo(casting) teniendo la clase con GetClass? de ser así me podrias dar un ejemplo si no es mucha molestia?
Saludos..
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 11-02-2011 a las 18:28:19.
Responder Con Cita
  #2  
Antiguo 11-02-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
¡Polimorfismo!

Con GetClass obtienes una referencia de clase. En el caso que nos ocupa, como al menos se sabe que la clase referenciada es un descendiente de TForm, puedes hacer el moldeo con TForm y así llamar al constructor.

El polimorfismo es entonces, lo que permite que la instancia construida sea de la clase derivada y no de TForm.

Así pues, no puedes hacer el moldeo, pero sí construir los objetos de la clase adecuada.

// Saludos
Responder Con Cita
  #3  
Antiguo 11-02-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Disculpame pero estoy un poco perdido , " estoy más perdido que Evo en Nueva York".
Hasta aquí>
Cita:
Empezado por roman Ver Mensaje
...
Con GetClass obtienes una referencia de clase.
Todo bien pero...
Cita:
Empezado por roman Ver Mensaje
..En el caso que nos ocupa, como al menos se sabe que la clase referenciada es un descendiente de TForm, puedes hacer el moldeo con TForm y así llamar al constructor.

El polimorfismo es entonces, lo que permite que la instancia construida sea de la clase derivada y no de TForm.

Así pues, no puedes hacer el moldeo, pero sí construir los objetos de la clase adecuada.
Es decir que puedo hacer el casting siempre y cuando tenga Pre-conocimiento de que se trata de un objeto específico?
Yo estaba pensando que talves podría haber la posibilidad de que tal casting sea más abstracto., pero talves sea puras ideas mías,no me hagan caso,en fin supongo que talves delphi llega hasta por ahí nomas...
Saludos y la verdad que me parece un tema muy interesante...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #4  
Antiguo 11-02-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
¿Más abstracto? Bueno, puedes usar TComponent -como, de hecho, lo hace adonias. Más no puedes porque el constructor de TObject no es virtual.

Pero, lo que debes preguntarte es, ¿qué ganas con eso?

Si tienes una aplicación que requiere crear formularios que no conoce de antemano, el poder hacerlo a partir de TForm, o incluso a partir de algún TBaseForm que sea más específico a tu aplicación, es algo sumamente poderoso.

El "preconocimiento" que mencionas sólo se refiere a que se trata de un formulario, pero no requiere saber qué formulario en específico es. Es la potencia del polimorfismo.

Y esto es así en cualquier lenguaje OOP. De hecho, no todos los lenguajes las clases tienen un ancestro común como el TObject de Delphi.

// Saludos
Responder Con Cita
  #5  
Antiguo 11-02-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Red face

Bueno básicamente a lo que yo me refería es que si delphi permite hacer ésto:
Código Delphi [-]
...
with TComponentClass(AClass).Create(Application)...
...
Osea estoy instanciando un objeto atraves de su clase(algo muy pero muy bueno por cierto ) entonces quizas debería poder hacer algo similar para hacer casting hacia la misma clase(AClass)
algo como
Código Delphi [-]
...
with TComponentClass(AClass).Create(Application) as AClass do// 
...
o algo por el estilo, pero como dije es solo un pensamiento y la verdad me falta mucho por aprender...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 11-02-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
Ok. Vamos a suponer que puedes. Entonces, ya tendrías, con

Código Delphi [-]
TComponentClass(AClass).Create(Application) as AClass

una referencia de TForm2. ¿Cuál sería tu siguiente línea de código? ¿Algo asi?

Código Delphi [-]
(TComponentClass(AClass).Create(Application) as AClass).labelForm2.Caption := 'hola';

Pero, para que el compilador sepa quién es labelForm2, necesita la definición de TForm2, que es lo que no tienes.

La única manera sería usar RTTI. Pero, como dije, eso no siempre es del todo una buena idea. Se supone que en OOP, con una referencia a un objeto debes poder hacer sólo lo que la clase de ese objeto marque.

Claro que el IDE de delphi no podría existir sin RTTI, pero un IDE es un tipo muy especial de aplicación, es algo así como una meta-aplicación

// Saludos
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
Como cargar componentes activeX y librerias en el ejecutable tom_rkx C++ Builder 3 09-04-2008 22:38:57
Librerias Bonachon Conexión con bases de datos 2 18-01-2007 01:54:46
librerias javikanin Varios 0 09-11-2004 22:11:20
librerias kwan Conexión con bases de datos 7 16-09-2003 23:53:21
Librerias esquerda21 Gráficos 6 08-08-2003 09:47:08


La franja horaria es GMT +2. Ahora son las 08:31:31.


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