Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
14-76570
artemkin
2003-03-06 15:43
2003.03.24
Winamp again !


6-76544
Cherepovets
2003-02-03 13:55
2003.03.24
Атентификация и как ее сделать


9-76259
Nemi
2002-10-22 17:02
2003.03.24
Полный редактор техники в 2D стратегии...


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


3-76317
anton_cor
2003-03-01 17:37
2003.03.24
Пропадают записи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский