动态调用函数的问题??!!
我在String变量中保存了一个一个对象的函数名称,想在该对象中运行该函数,怎样实现??
实例代码如下:str1 := 'Function1';
obj1.str1 ????? 能否运行,如果不能,怎样才能运行
是不是用指针???(在 C 语言中好像可以 )
问题点数:20、回复次数:11Top
1 楼jtsy(冬冬)回复于 2001-07-02 15:03:50 得分 0
请回答???
Top
2 楼jtsy(冬冬)回复于 2001-07-02 15:04:16 得分 0
请回答???Top
3 楼jtsy(冬冬)回复于 2001-07-02 15:04:20 得分 0
请回答???Top
4 楼Jera(天~~~~塌下来我也不怕...)回复于 2001-07-02 15:20:43 得分 0
不能运行的Top
5 楼kuangning(郎之间)回复于 2001-07-02 15:26:30 得分 0
为什么要这样做?Top
6 楼jtsy(冬冬)回复于 2001-07-02 15:48:21 得分 0
谢谢你的参与。
举个例子:
有一个菜单配置表:
菜单一 对应的函数 menu1();
菜单二 对应的函数 menu2();
.. ..
有一个编译好的dll调用此表,动态生成菜单项,而菜单对应的函数可能是后加的,即是另一个dll,在不需要重新编译生成菜单DLL的情况下、只要修改菜单表和实现的DLL即可完成工作。
有的用户水平很高,他们有能力改写具体实现的DLL,所以要实现这种功能了。
我记得C语言可以实现这种功能,具体忘了。好像用指针吧!
请大家多多帮忙。。
Top
7 楼Jera(天~~~~塌下来我也不怕...)回复于 2001-07-02 15:50:06 得分 5
FFf.OnMouseDown:=MyOnMouseDown;Top
8 楼li_zhifu(东北人)回复于 2001-07-02 15:54:58 得分 5
为什么不用Ini文件呢?比如说
[Root]
Count=2
Item1=菜单1
SubItem1=
Command1=Paint.exe
Item2=菜单2
SubItem2=SubItem2
Command2=
[SubItem2]
Count=1
Item1=子菜单1
SubItem1=
Command1=NotePad.exe
在程序中用递归的方式读取,并动态创建MenuItemTop
9 楼li_zhifu(东北人)回复于 2001-07-02 15:56:07 得分 0
我这里有一个很详细的例子,要的话请联系
lzfmail@sina.comTop
10 楼VictorG()回复于 2001-07-02 16:45:33 得分 5
var
hLib: integer;
hrun:function(param1:type1;param2:type2...):rtntype;stdcall;//你的过程或函数的格式
begin
hlib:=loadlibrary(pchar('yourlib.dll'));
if hlib<>0 then
hrun:=GetProcAddress(win.hlib,'YourProcName');
if @hrun<>nil then hrun;
end;
Top
11 楼zhengji(看雨飞)回复于 2001-07-02 17:05:19 得分 5
你的意思是不是 想动态改变 某事件的处理函数啊?
要是这样的话, 如 Jerry 所说,写个 处理函数 (仿照 delphi 自动添加 的代码)
然后 yourobject.onevent:=yourhandlefunction; 就行了,程序运行时也是可以随时更改的,很方便啊Top




