Если все процедуры, которые вы собираетесь вызывать имеют список с одними и теми же параметрами, (или все без параметров), то это не трудно. Для этого необходимо:
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; |
Peter Below [000691]