![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Взято из FAQ: http://blackman.km.ru/myfaq/cont4.phtml
Переменная в качестве имени процедуры Каким образом можно использовать переменную типа String в качестве имени процедуры? Если все процедуры, которые вы собираетесь вызывать, имеют список с одними и теми же параметрами (или все без параметров), то это не трудно. Для этого необходимы: процедурный тип, соответствующий вашей процедуре, например: type TMacroProc = procedure(param: Integer); массив, сопоставляющий имена процедур их адресам во время выполнения приложения: type 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 := 1 to MaxMacroIndex do if CompareText(name, Macros[i].name) = 0 then begin Macros[i].proc(param); break; end; end; Макропроцедуры необходимо объявить в секции Interface модуля или с ключевым словом Far, например: procedure Proc1(n: Integer); far; begin ... end; procedure Proc2(n: Integer); far; begin ... end; [News Group] -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |