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 09-12-2005
OscarG OscarG is offline
Miembro
 
Registrado: sep 2005
Posts: 35
Poder: 0
OscarG Va por buen camino
Convertir un String en un método.

Hola a todos.

Quería saber si es posible convertir un String en un método o procedimiento.

Estaba pensando en q en java cuando hacen un bean, utiliza un string para decir q método utilizar y luego el server se encarga de ejecutar ese método o algo por el estilo (desconozco los pasos internos).

Bueno, la cosa es q yo estoy currandome algo parecido y algo de ese estilo creo q me vendría bien. Lo q quiero evitar es crear casos, indices, etc. Sino q mi documento xml, diga a la aplicación q método utilizar lo más directo posible.

Seguramente no exista, por lo menos yo nunca lo he oido, pero quien sabe...

Si alguien me lo puede aclarar...muchas grácias, sino también.
Responder Con Cita
  #2  
Antiguo 09-12-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,

No sé si el artículo "How to execute a method (procedure/function) by name", de Zarko Gajic podría servirte de algo. En todo caso copio a continuación el código para tenerlo disponible en caso necesario, puesto que me parece interesante además:

Código Delphi [-]
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject) ;
    procedure CallMeByName(Sender: TObject) ;
  private
    procedure ExecMethod(OnObject: TObject; MethodName: string) ;
  end;

var
  Form1: TForm1;

type
  TExec = procedure of object;

procedure TForm1.ExecMethod(OnObject: TObject; MethodName: string) ;
var
  Routine: TMethod;
  Exec: TExec;
begin
  Routine.Data := Pointer(OnObject) ;
  Routine.Code := OnObject.MethodAddress(MethodName) ;
  if NOT Assigned(Routine.Code) then Exit;
  Exec := TExec(Routine) ;
  Exec;
end;

procedure TForm1.CallMeByName(Sender: TObject) ;
begin
  ShowMessage('Hello Delphi!') ;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
  ExecMethod(Form1, 'CallMeByName') ;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 09-12-2005
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Muy interesante pense que no se podia era algo que andaba buscando muchas gracias DEC
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 09-12-2005
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
¿Esto funciona? Lo siento por ser tan escéptico, además es que no tengo Delphi ahora a mano para probarlo.... pero ¿no se había dicho siempre que Delphi era un lenguaje compilado y por tanto éstas cosas no se podían hacer? ¿Estoy en lo cierto o me equivoco?

Gracias y un saludo.-
Responder Con Cita
  #5  
Antiguo 09-12-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,


Cita:
Empezado por DarKraZY
¿Esto funciona? Lo siento por ser tan escéptico, además es que no tengo Delphi ahora a mano para probarlo.... pero ¿no se había dicho siempre que Delphi era un lenguaje compilado y por tanto éstas cosas no se podían hacer? ¿Estoy en lo cierto o me equivoco?
Bueno. Sí que funciona. No estoy muy puesto en el tema, pero, se hace uso de lo que se conoce como "RTTI" (Runtime Type Information). Quiere decirse que hay cierta información a la que puede accederse en tiempo de ejecución, y, entre esta información, mejor dicho, a partir de ella, es posible ejecutar métodos, obtener y establecer el valor de propiedades, etc. En la página Web que se enlaza arriba hay más información al respecto. También en estos Foros se ha tratado a veces el tema.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 19-12-2005
OscarG OscarG is offline
Miembro
 
Registrado: sep 2005
Posts: 35
Poder: 0
OscarG Va por buen camino
Perdonar por no agradeceros antes pero pensaba q lo había hecho ya.

El programa funciona, pero me falta pasarle parámetros. Seguiré investigando y si descubro algo, continuaré con este hilo para completarlo.

Vaya, es increible, pensaba q me ibais a insultar y resulta q existe y es posible jeje.

Muchas gracias.
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 07:21:34.


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