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 25-10-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
Question nombre de variables de una clase

Hola a todos, mi pregunta de hoy es la siguiente, tengo una clase que define algunas variables por ejemplo FNombre, Nombre lo tengo en una variable del tipo string, y lo que necesito hacer es poder formar 'F' + Nombre y que lo tome como la variable, para poder asignarle un valor. Es posible hacer esto?
Gracias a todos.
Responder Con Cita
  #2  
Antiguo 25-10-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.275
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
Si en lugar de variable lo defines comno una propiedad published podrás hacerlo utilizando RTTI.
En la Unit TypInfo (al menos en Delphi6) tienes unas cuantas rutinas, entre ellas ésta que te pueden ser útiles:

procedure SetStrProp(Instance: TObject; const PropName: string; const Value: string); overload;

Revisa éste hilo:
http://www.clubdelphi.com/foros/show...highlight=rtti
__________________
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
  #3  
Antiguo 25-10-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
Gracias Neftali por tu ayuda, el hilo que me recomendas es lo que me habias contestado en otra oportunidad y me sirvio. pero este no es el caso.
Lo que necesito, y tal vez no lo detalle bien, es formar el nombre de una variable en un string, y luego que ese string sea entendido como la variable a la cual le puedo asignar un valor.
por ejemplo:

tengo una varible: FXX

d:='XX';
'F'+d ---> que sea la variable

se entiende?
Responder Con Cita
  #4  
Antiguo 25-10-2005
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
Convendría que explicaras un poco más lo que deseas hacer, dar un poco de contexto. Hay que recordar que Delphi, a diferencia de VB, no es un lenguaje interpretado por lo que, normalmente, cosas como la que buscas no se pueden hacer. En algunas situaciones se puede usar RTTI tal como te sugiere Neftali, pero en general no es algo que se pueda. El nombre de una variable es sólo válido para la escritura del código. El compilador cambiará todos esos nombres por referencias numéricas o direcciones de memoria.

Pero si contextualizas tu duda, es muy posible que alguien te pueda indicar alguna alternativa viable.

// Saludos
Responder Con Cita
  #5  
Antiguo 25-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A mí se me ocurre a bote pronto que podría hacerse, pero, tal como te han comentado Neftali y roman. Lo que me intriga es saber el por qué es necesario... quiero cómo has llegado a la conclusión de que tienes que logar algo así, qué sentido tiene, bueno, que me harías muy feliz.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 25-10-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.275
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
Sí lo he entendido, pero sólo se puede hacer con propiedades Published o con componentes, pero no con variables.
Otra opción es usar algun sistema de Scripts en Delphi, pero no estoy seguro de que sea eso lo que necesitas.

¿Exactamente qué tienes que hacer luego con esa variable?
__________________
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
  #7  
Antiguo 25-10-2005
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
elcigarra Va por buen camino
Yo una vez tuve que hacerlo

recuerdo hace como quince años utilizaba FoxPro y si mal no recuerdo ponías algún caracter que interpretaba el string como un nombre de variable. En mi experiencia en Delphi he pasado por algunas veces en que me ha parecido útil (por lo menos me ahorraría mucho código) y siempre pensé que no se podía hacer.

X ej. en mi caso (usando Delphi), hace un tiempo hice un software de instrumentación donde se mantenían y modificaban (en memoria) unas 20 actividades (variables activ1,activ2...etc.) sobre un instrumento físico, en las que uno podia actualizar el valor independientemente de cada una (es medio complejo de explicar). Finalmente esos datos terminaban en una base de datos. El caso era que si la actividad que cambiaba era activ1, todas las demas tomaban también su valor. En ese caso hubiera sido útil modificarlas todas juntas con un for... next. Como esto además se reiteraba con varios "asuntos" en el programa. Al final opté por trabajar directamente sobre tablas de la base de datos, que es lo que yo recomendaría.

Lo que le puedo decir a Mariana es que si trabaja cobre campos de una tabla sí se puede hacer ya que utilizando:
Tabla1.FieldValues['campo1'] los campos se ponen como un String y se aceptan variables de tipo string entre los paréntesis.
Responder Con Cita
  #8  
Antiguo 25-10-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
Gracias a todos, es como dice Neftali son variables privadas de la clase y no se puede formar el nombre, la intención era esa ya que en la BD tengo el nombre sin la F, y luego poder asignarles valor.
Nuevamente gracias a todos
Responder Con Cita
  #9  
Antiguo 25-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Entonces esto que he estado haciendo no tenía nada que ver...

Código Delphi [-]
 // Estamos en un formulario
 // de nombre frmPrincipal.
 //
 var
   frmPrincipal: TfrmPrincipal;
 
 // Una clase de componente.
 //
 type
   TUnaClase = class(TComponent)
   private
     FPropiedad: string;
   published
     property Propiedad: string read FPropiedad write FPropiedad;
   end;
 
 implementation
 
 {$R *.DFM}
 
 uses
   TypInfo;
 
 var
   FUnaClase: TUnaClase;
 
 procedure TfrmPrincipal.FormCreate(Sender: TObject);
 begin
   FUnaClase := TUnaClase.Create(Self);
   FUnaClase.FPropiedad := 'Probando.';
 end;
 
 procedure TfrmPrincipal.FormClose(Sender: TObject;
   var Action: TCloseAction);
 begin
   FUnaClase.Free;
 end;
 
 function PropiedadString(const nombrePropiedad: string;
   const componente: TComponent) : string;
 var
   propInfo: PPropInfo;
 begin
   Result := '';
   propInfo := GetPropInfo(componente.ClassInfo, nombrePropiedad);
   if Assigned(propInfo) then
     Result := GetStrProp(componente, propInfo);
 end;
 
 procedure TfrmPrincipal.Button1Click(Sender: TObject);
 begin
   // Obtenemos el valor de una propiedad
   // de un componente mediante una cadena.
   ShowMessage(PropiedadString('Propiedad', FUnaClase));
 end;
 
 end.
__________________
David Esperalta
www.decsoftutils.com
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 15:06:28.


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