Главная страница
    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.46 MB
Время: 0.007 c
3-76325
Roman Go
2003-03-05 09:40
2003.03.24
Как связать таблицы


1-76434
mmmh
2003-03-07 23:40
2003.03.24
Подскажите как правильно считать время: есть 3 лабела


9-76246
Федя
2002-10-22 11:24
2003.03.24
Как вообще сделать что-нибудь объемное в Delphi


14-76571
Vvedensk
2003-03-08 09:06
2003.03.24
Проблема с D7 при установки компонентов


8-76522
Gayrus
2002-12-13 10:30
2003.03.24
Bass





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский