Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Convertir un String en un método. (https://www.clubdelphi.com/foros/showthread.php?t=28109)

OscarG 09-12-2005 14:11:53

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.

dec 09-12-2005 15:05:39

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;

Caro 09-12-2005 15:26:05

Muy interesante pense que no se podia era algo que andaba buscando muchas gracias DEC

DarKraZY 09-12-2005 15:32:51

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

dec 09-12-2005 15:40:57

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.

OscarG 19-12-2005 12:52:35

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.


La franja horaria es GMT +2. Ahora son las 21:23:25.

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