Каким образом можно использовать переменную типа String в качестве имени процедуры?

 

Если все процедуры, которые вы собираетесь вызывать, имеют список с одними и теми же параметрами (или все без параметров), то это не трудно. Для этого необходимы: процедурный тип, соответствующий вашей процедуре, например:

 

 

Code:

type

{©Drkb v.3(2007): www.drkb.ru}

 

TMacroProc = procedure(param: Integer);

//массив, сопоставляющий имена процедур их адресам во время выполнения приложения:

TMacroName = string[32];

TMacroLink = record

name: TMacroName;

proc: TMacroProc;

end;

TMacroList = array [1..MaxMacroIndex] of TMacroLink;

 

const

Macros: TMacroList = (

(name: 'Proc1'; proc: Proc1),

(name: 'Proc2'; proc: Proc2),

...

); //интерпретатор функций, типа:

 

procedure CallMacro(name: String; param: Integer);

var

i: Integer;

begin

for i := 1to MaxMacroIndex do

if CompareText(name, Macros[i].name) = 0then

begin

Macros[i].proc(param);

break;

end;

end;

 

{Макропроцедуры необходимо объявить в секции Interface модуля или с ключевым словом Far, например: }

procedure Proc1(n: Integer); far;

begin

...

end;

 

procedure Proc2(n: Integer); far;

begin

...

end;

 

 

 

 

Взято с Vingrad.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить