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 12-11-2005
edalmasso edalmasso is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mendoza - Argentina
Posts: 37
Poder: 0
edalmasso Va por buen camino
Uso de codigo dinámico

Buenas, les tengo una pregunta...

Necesito la forma de poder recorrer(iterar) los elementos de un objeto de una clase creada por mi y poder asignarles valores en forma dinamica.

Yo he vuelto de VB y lo hacia de esta forma


Código:
  public sub Asignar(pObjeto as TCliente)
      for each mPropiedad as Object in pObjeto.Gettype.PropertyList
           callbyname(pObjeto, mPropiedad.Name, "Juan Perez")
      next
   
  end sub
Quisiera saber como implemento el CallByName para llamar a propiedades de un objeto por una cadena "ClienteNombre".
Y como recorrer todas las propiedades .
Y si es posible un ejemplo.
Se entiende?

Les agradezco de antemano, saludos
Eduardo

Última edición por dec fecha: 12-11-2005 a las 23:41:39. Razón: ¡¡Encerrad el código fuente entre las etiquetas [CODE] ... [/CODE]!!
Responder Con Cita
  #2  
Antiguo 14-11-2005
edalmasso edalmasso is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mendoza - Argentina
Posts: 37
Poder: 0
edalmasso Va por buen camino
Alguna idea?? pliss
Responder Con Cita
  #3  
Antiguo 14-11-2005
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.286
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
Es un tema que salió hace unos días en los foros (y algunas otras veces anteriormente); Lo que necesitas se puede hacer vía RTTI.
En éste truco tienes el código para obtener todas las propiedades de un componente y cómo asignarles un valor a partir del nombre.

De todas formas busca información sobre RTTI por internet y encontrarás más opciones.
__________________
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 14-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
http://www.clubdelphi.com/foros/show...hlight=typinfo

Despues de leer en ese hilo, ya podrás buscar por el foro por cosas más concretas.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 14-11-2005
edalmasso edalmasso is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mendoza - Argentina
Posts: 37
Poder: 0
edalmasso Va por buen camino
Question No quiere...

Probe el código y funciona perfectamente para componentes pero lo necesito para objetos creados de clases hechas por mi.
Tambien probe con las funciones de TypInfo, pero creo los objetos bien y cuando le voy a asignar cualquier propiedad, me dice q la propiedad no fue encontrada, debe la clase heredar o implementar alguna interfase?

Ejemplo:
Teniendo las siguientes clases
TPaciente = Class
Nombre : String;
end;

TMate = Class
TieneBombilla : boolean;
end;

Necesito algo asi:
function AsignarPropiedad(pObjeto : TObject; pPropiedad: String; pValor:TObject);
begin
pObjeto.pPropiedad := pValor; //eso como se hace????
end;


y correrlo de la siguiente forma:
begin
Mate := TMate.Create; //para mate
AsignarPropiedad(Mate, 'TieneBombilla', 0);

Pacietne := TPaciente.Create;
AsignarPropiedad(Paciente, 'Nombre', 'Pablito');
end;

Muchas gracias y los felicito por la calidad del soporte y la calidad de las respuestas.
Saludos!
Responder Con Cita
  #6  
Antiguo 14-11-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola edalmasso, no entiendo por que repetir aqui el mismo mensaje ya publicado por vos en este otro hilo

Te invito a elegir uno de los dos hilos para que permanezca tu mensaje y borrar el que no salga favorecido. En todo caso, si los dos hilos tienen relación, crear un vínculo entre ellos.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 14-11-2005
edalmasso edalmasso is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mendoza - Argentina
Posts: 37
Poder: 0
edalmasso Va por buen camino
Talking

Este es el q queda, me confundi y lo repondi primero en el otro hilo
Saludos
Responder Con Cita
  #8  
Antiguo 15-11-2005
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.286
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
Cita:
Empezado por edalmasso
Probe el código y funciona perfectamente para componentes pero lo necesito para objetos creados de clases hechas por mi.
Debe funcionar con propiedades de componentes estandard o de clases hechar por tí, siempre que las propiedades estén definidas como published; Es una condición ineludible para utilizar RTTI;

Si tienes propiedaes de tus clases definidas como public, pásalas a published y con eso será suficiente.
__________________
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
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


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


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