Иногда бывает нужно вызвать процедуру, название которой не известно в момент выполнения программа. Ну, бывает такое :) В скриптовых языках программирования с этим нет проблем, а вот в компилируемых языках, таких как Pascal/Delphi с этим не так просто. Небольшая заметка как это реализовать на Delphi
Для начала в типах объявляем тип:
type
myproc = procedure;stdcall;
Далее в implementation пишем пример процедуры, название которой будет неизвестно в момент выполнения.
procedure Proc1;
begin
ShowMessage('Hello From Proc1');
end;
А вот код вызова для кнопки Button1 на форме Form1:
procedure TForm1.Button1Click(Sender: TObject);
var
p:myproc;
h:HWND;
begin
h:=GetModuleHandle(nil);
p:=GetProcAddress(h,'Proc1');
ShowMessage(IntToStr(h));
p; // вот он сам вызов процедуры
p:=nil;
end;
Понятно, что вместо ‘Proc1’ может быть строковая переменная. В конце модуля экспортируем процедуру:
exports Proc1;
Пожалуй вот и всё.