PDA

Ver la Versión Completa : Ejecutar Procedure en Tiempo de Ejecucion


ASAPLTDA
14-01-2015, 13:07:42
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/fbmanual/manual.php?book=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:



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

...
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 :)