Как выполнить метод по его имени?

Материал из DRKB

Как выполнить метод по его имени?[править | править код]

{ ... }
type
  PYourMethod = ^TYourMethod;
  TYourMethod = procedure(S: string) of Object;


procedure TMainForm.Button1Click(Sender: TObject);
begin
  ExecMethodByName('SomeMethod');
end;


procedure TMainForm.ExecMethodByName(AName: string);
var
  PAddr: PYourMethod;
  M: TMethod;
begin
  PAddr := MethodAddress(AName);
  if PAddr <> nil then
  begin
    M.Code := PAddr;
    M.Data := Self;
    TYourMethod(M)('hello');
  end;
end;


procedure TMainForm.SomeMethod(S: string);
begin
  ShowMessage(S);
end;


Author: Sasan Adami
Source: Взято из http://www.lmc-mediaagentur.de/dpool
ID: 00284