Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ejecutar Procedure en Tiempo de Ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=87495)

ASAPLTDA 14-01-2015 13:07:42

Ejecutar Procedure en Tiempo de Ejecucion
 
Hola foristas
Es posible ejectuar un procedimiento en forma dinamica en ejecucion?
Ejemplo
Tengo una tabla donde almaceno en una cadena el nombre del procedimiento que se requiere ejecutar?

Gracias por sus comentarios

Casimiro Notevi 14-01-2015 13:40:36

execute procedure http://www.janus-software.com/fbmanu...=psql&topic=92

aposi 14-01-2015 13:52:37

Hola,
creo que se refiere a que en la base de datos tiene el nombre de un procedimiento

si es así mira este codigo:

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;

ASAPLTDA 16-01-2015 04:35:40

Ejecutar Procedure en Tiempo de Ejecucion II
 
Gracias Aposi, por tu respuesta.
La interpretación a la pregunta fue correcta, estoy leyendo la solución y me parece que es lo que busco. Pero quisiera saber si procedimiento a efectuar esta en una unidad aparte de una forma funcionaria tambien?
El caso es que quiero guardar la rutina que se debe efectuar para una solicitud de materiales es un archivo donde se indicaria el nombre del proceso a ejecutar ejemplo
tabla de rutinas
Material Codigo de Rutina
xxxxx calcular_conbase_ valumen
yyyyy calcular_conbase_ peso

calcular_conbase_ valumen.pas
calcular_conbase_ peso.pas

asi podria ir aumentando las rutinas sin tener que comparar que prodimiento a ejectuar tal como uste lo plantea en la solucion

ecfisa 16-01-2015 09:44:01

Hola ASAPLTDA.
Cita:

Empezado por ASAPLTDA (Mensaje 487712)
...
Pero quisiera saber si procedimiento a efectuar esta en una unidad aparte de una forma funcionaria tambien?
...

Funcionará siempre que: El primer argumento enviado sea la instancia de una clase y el segundo sea el nombre de un método de la misma con atributo de visibilidad published.

Saludos :)


La franja horaria es GMT +2. Ahora son las 14:33:00.

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