| Как использовать переменную для имени процедуры? | Previous Home Next |
| TMacroProc = procedure(param: Integer); |
| //массив, сопоставляющий имена процедур их адресам во время выполнения приложения: |
| TMacroName = string[32]; |
| TMacroLink = record |
| name: TMacroName; |
| proc: TMacroProc; |
| end; |
| TMacroList = array [1..MaxMacroIndex] of TMacroLink; |
| |
| Macros: TMacroList = ( |
| (name: 'Proc1'; proc: Proc1), |
| (name: 'Proc2'; proc: Proc2), |
| ... |
| ); //интерпретатор функций, типа: |
| |
| i: Integer; |
| for i := 1 to MaxMacroIndex do |
| if CompareText(name, Macros[i].name) = 0 then |
| begin |
| Macros[i].proc(param); |
| break; |
| end; |