Delphi 1
Макро-процедуры
Каким образом мне можно использовать переменную типа String в качестве имени процедуры?
Если все процедуры, которые вы собираетесь вызывать имеют список с одними и теми же параметрами, (или все без параметров), то это не трудно. Для этого необходимо:
- процедурный тип, соответствующий вашей процедуре, например:
TypeTMacroProc = Procedure( param: Integer ); - массив, "подключающий" имена процедур к их адресам во время выполнения приложения:
TypeTMacroName = String[32];TMacroLink = Recordname: TMacroName;proc: TMacroProc;End;TMacroList = Array [1..MaxMacroIndex] Of TMacroLink;
ConstMacros: TMacroList=((name: 'Proc1'; proc: Proc1 ),(name: 'Proc2'; proc: Proc2 ),.....); - интерпретатор функций, типа:
Procedure CallMacro( name: String; param: Integer );Vari: Integer;BeginFor i := 1 To MaxMacroIndex DoIf CompareText( name, Macros[i].name ) = 0 Then BeginMacros[i].proc( param );Break;End;End;Макро-процедуры необходимо объявить в секции Interface модуля или с ключевым словом Far, например:
Procedure Proc1( n: Integer ); far;Begin....End;
Procedure Proc2( n: Integer ); far;Begin....End;