Вниз
Скачать: CL | DM;

в переменной записано название процедуры   Найти похожие ветки 

← →
avet   (2003-03-12 15:13) [0]

не подскажете,как в Delphi(если там вообще существует такая возможность) вызвать процедуру, имя которой записано в переменной? такая проблема встречается уже не первый раз!


← →
y-soft ©   (2003-03-12 15:20) [1]

Макроподстановки возможны в интерпретаторах,
а в Delphi возможно запистать в переменную процедурного типа адрес процедуры. Хотя обходные пути есть, например, хранить в StringList одновременно имя процедуры и ссылку на нее


← →
PVOzerski ©   (2003-03-12 15:26) [2]

Указать все процедуры, которые надо вызывать, в секции exports (как в dll), потом вызывать через GetProcAddress. У меня такое работало. Но как с параметрами разбираться - решать Вам.


← →
y-soft ©   (2003-03-12 15:30) [3]

>PVOzerski © (12.03.03 15:26)
В общем-то это такой же подход. Можно даже совместить - заполнять TStringList.Objects результатами GetProcAddress


← →
Polevi ©   (2003-03-12 15:42) [4]

или IDispatch.Invoke


← →
Serginio   (2003-03-12 15:50) [5]

TObject.FindMethod


← →
stone ©   (2003-03-12 16:02) [6]

Нашел тут примерчик для процедур с одинаковыми параметрами

type
TMacroProc = procedure(param: integer); // процедурный тип соответствующей вашей процедуре
TMacroName = string[32];
TMacroLink = record
name: TMacroName;
proc: TMacroProc;
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;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
6-76543
kofman
2003-01-30 22:54
2003.03.24
Как определить есть ли доступ из локалки в инет?


14-76653
Дмитрий К.К.
2003-03-06 06:58
2003.03.24
Именинники 6 марта


3-76347
Pat
2003-03-05 21:38
2003.03.24
Ссылочная целостность


4-76719
elf_123
2003-01-28 19:34
2003.03.24
Хук+сеть


8-76526
Atomic
2002-12-10 03:46
2003.03.24
Проблема с Canvas




   Наверх