Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: 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 вся ветка

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-76633
chistyakov
2003-03-07 12:21
2003.03.24
Нужны компоненты


6-76555
_MAD_
2003-01-30 22:01
2003.03.24
Программа счетчик времени


1-76418
Kamchadal
2003-03-11 15:51
2003.03.24
Помогите пожалуйста


4-76716
Василий2
2002-12-13 11:49
2003.03.24
runas.exe - ОШИБКА!


9-76253
Dark[UA]
2002-09-30 09:25
2003.03.24
GLScene