Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизВызов функции из функции Найти похожие ветки
← →
shark (2003-08-25 16:14) [0]у меня есть функция :
function RunFunktion( name: string )
...
так вот вопрос - как мне вызвать процедуру или функцию зная ее имя в формате String ???
Или может есть специальный тип переменной для имен процедур ???
← →
HolACost! (2003-08-25 16:17) [1]Вопрос уже был - смотри дайджест! К своим словам могу выдать ещё одну весч! Если надо - напишу - много больно!
← →
Digitman (2003-08-25 16:27) [2]
> shark
в общем случае (именно в таком вот примитивном виде) - никак
частных же случаев несколько, и каждый из них нужно рассматривать в отдельности, неразрывно с программным механизмом, реализующим тем или иным образом схожую возможность
← →
jack128 (2003-08-25 16:27) [3]
procedure Test();
begin
ShowMessage("Test");
end;
exports
Test;
procedure TForm1.Button1Click(Sender: TObject);
var
p : TProcedure;
hLib : THandle;
begin
hLib := GetModuleHandle(PChar(ExtractFileName(Application.ExeName)));
@p := GetProcAddress (hLib,"Test");
if @p <> nil then
p;
end;
← →
jack128 (2003-08-25 16:29) [4]Да, естественно предпологается, что заголовок у всех твоих функций одинаков
← →
Юрий Федоров (2003-08-25 16:31) [5]>> hLib := GetModuleHandle(PChar(ExtractFileName(Application.ExeName)));
Может просто hInstance ?
← →
jack128 (2003-08-25 16:33) [6]
> Может просто hInstance ?
Может -)
← →
Palladin (2003-08-25 16:36) [7]:)
← →
shark (2003-08-25 17:06) [8]Спасибо усем !!! =)))
← →
shark (2003-08-25 17:10) [9]У меня еще вопрос
А как передать в такую процедуру параметры ?
← →
default (2003-08-25 17:12) [10]shark ©
значит ты не понял код Jack128...
спросил бы тогда...объяснили бы...
опиши вместо TProcedure нужный тебе тип и всё и потом вызывай с параметром(ами)
← →
Palladin (2003-08-25 17:13) [11]научится парсить строку
← →
default (2003-08-25 17:24) [12]Palladin
на это нужно время а тут всё сразу
и наверно с минимальным кол-ом кода и сил...
← →
shark (2003-08-25 17:26) [13]А код как пример написать можете ?
← →
Palladin (2003-08-25 17:30) [14]var
Params:TStringList;
ParamStr:string;
...
ParamStr:=Copy(s,pos("(",s)+1,pos(")",s)-pos("(",s));
Params:=TStringList.Create;
Params.Delimiter:=",";
Params.DelimitedText:=ParamStr;
...
учти... строки содержащие запятую - корректно парсится не будут...
← →
default (2003-08-25 17:30) [15]
type
TMyProc = procedure(const A, B: Single);
procedure Test();
begin
ShowMessage("Test");
end;
exports
Test;
procedure TForm1.Button1Click(Sender: TObject);
var
p : TMyProc;
begin
@p := GetProcAddress (hLib,"Test");
if @p <> nil then
p(1.5, 3.7);
end;
вот подделанный код Jack128
← →
default (2003-08-25 17:32) [16]вместо hLib - hInstance
← →
shark (2003-08-25 17:36) [17]Опять спасибо , теперь я уже думаю вопросов небудет =)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c