Ya puestos a hacer cosas "exoticas" ¿que os parece esto?
Código Delphi
[-]
procedure Vamos1;
begin
ShowMessage('Hola 1');
end;
procedure Vamos2;
begin
ShowMessage('Hola 2');
end;
procedure TForm1.EjecutarPorNombre(Nombre: String);
var
i: integer;
p: Procedure;
begin
i:= Lista.IndexOf(Nombre);
if i <> -1 then
begin
p:= Pointer(Lista.Objects[i]);
p;
end else
ShowMessage('No se encontro el procedimiento');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EjecutarPorNombre('Vamos1');
EjecutarPorNombre('Vamos2');
EjecutarPorNombre('Vamos3');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Lista.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Lista:= TStringList.Create;
Lista.AddObject('Vamos1',TObject(@Vamos1));
Lista.AddObject('Vamos2',TObject(@Vamos2));
end;
No es que tenga mucha utilidad, pero resulta curioso