在动态调用DLL时,用函数指针调用,但是必须首先定义函数格式于调用函数一样的函数指针类型,有没有不需要定义函数指针格式的方法
解决方案 »
- [急]——如何实现高效率记录文本日志???
- 送1000分,不够再加。在delphi中通过ADO怎样获得所有数据库名
- 程序偶尔出现这个对话框“Access violation at address 77EBICB7 in 'KERNEL32.dll'Read of address 09B35000 ”
- [求助]delphi7.0与MS-sql server 2000的连接问题(二)
- 我公司的局域网是通过代理进行上网的,请问,我能否用ftp工具?
- 请问这个程序中@起什么作用?
- 关于菜单的一简单问题
- 请问在Dephi中可以画表格吗?????
- 40分讨论,关于MEMO 控件的显示焦点问题。
- 请问大伙三个问题(一如何创建空笔刷,vc下可用createstockbrush,二,如何用wm-gettext消息,因为地址没法转换成integer,三小弟考研,考什么方向的最好呢,谢谢回答
- 奇怪的问题。看看有没有人能解决?关于多线程。
- 如何将Delphi的应用程序放入HTML文件中 ,并可以利用IE可浏览
TMethod=procedure(smsg:string);
var
pMethod=TMethod;
begin.......
p("Test");end;我要达到的效果是var
p:pointer;
begin
........ //得到函数地址
p(smsg);//不要函数格式直接调用
end;
也就是去掉定义函数格式
TMethod=procedure(smsg:string);
var
pMethod:TMethod;
begin.......
p('Test');end;我要达到的效果是var
p:pointer;
begin
p:=........ //得到函数地址
p('test');//不要函数格式直接调用
end;
也就是去掉定义函数格式 TMethod=procedure(smsg:string);直接定义一个pointer类型就可以调用方法
var
Fun:Function(i:integer):integer;//定义一个函数指针
dllHandle:Handle;//dll句柄
i:integer;
begin
dllHandle:=LoadLibrary('mydll.dll');//装入dll
@Fun:=GetProcAddress(dllHandle,'dllFun');//获得dll中需调用的函数地址并赋给函数指针
i:=Fun(10);//调用函数
end;你写的
var
p:pointer;
begin
........ //得到函数地址
p(smsg);//不要函数格式直接调用
end;
p只是一个无类型指针,p(smsg)连编译都通不过,至少要
TMethod(p)(smsg)才行
>>直接使用ASM来处理这块以前大富翁 类似的问题,讨论过,不过,也只是自己做多一个函数,来处理不定参数的字节数的导入问题,感觉技术学习可以,但不大实用,至于 反射机制, 这个和我以前接触的概念,应用还有点区别,我也没深入学习, 也许,可从这里找到解决的方法
建议找一下OOP的编译原理方面的资料。