Вызов процедуры, имя которой содержится в переменной I
Как я могу вызвать процедуру, чье имя хранится в таблице, списке, и т.п.?
Другими словами, я хочу сохранить имя процедуры в переменной и для ее вызова
обращаться к значению этой переменной.
Какие предложения?
unit ProcDict; interface type MyProc = procedure (s : String); procedure RegisterProc(procName : String; proc : MyProc); procedure ExecuteProc(procName : String; arg : String); implementation uses Classes; var ProcDict : TStringList; procedure RegisterProc(procName : String; proc : MyProc); begin ProcDict.AddObject(procName, TObject(@proc));
end;procedure ExecuteProc(procName : String; arg : String); var index : Integer;
beginindex := ProcDict.IndexOf(ProcName);
if index >= 0 then
MyProc(ProcDict.objects[index])(arg);
// Можно вставить обработку исключительной ситуации - сообщение об ошибкеend; initialization ProcDict := TStringList.Create;
ProcDict.Sorted := true;
finalization ProcDict.Free;
end. |
[000307]