function add2(a,b:integer):integer;stdcall;
这里面的STDCALL等后缀代表什么意思?还有哪些后缀?各代表什么意思?
这里面的STDCALL等后缀代表什么意思?还有哪些后缀?各代表什么意思?
解决方案 »
- 登陆界面的添加用户问题
- 如何求汉字的asc码值 在线等
- 缅怀9.18先烈!抵制日货!日本人说的一句让中国人心寒的话!
- 怎样活的stringGrid控件中单元的值??
- Sdk问题?
- 小问题, 如何把个DBIMAGE里的图片复制到剪贴板里去??
- 请教如何将以下c语句转成delphi语句:
- 请教大家已经多长时间没有锻炼过了??
- Chechy!!快来!!midas!大家快来帮忙!!
- 如何编排这个数据库问题?急!!!
- 去掉IE广告的方法
- 执行了这句语后(Query1.SQL.Add('delete from "e:\stockacc.dbf"'Query1.ExecSQL;);,如何才能真正删除FOX数据库中的记录。而不仅仅是做
l、pascal、stdcall和safecall。根据调用模式的不同,
参数可以通过CPU的寄存器或堆栈传递给函数和过程。reg
ister模式使用CPU的三个寄存器传递参数,而其它模式则
用堆栈来传递参数。在register和pascal模式下从左至右
传递参数,即参数表中最左边的参数最先被求值并传递,
而最右边的参数最后求值并传递。另三种模式cdecl、std
call和safecall则从右至左传递参数。这些模式中除了cd
ecl外,都是由过程和函数在返回时清除堆栈中的参数,
而对于 cdecl模式,需由调用者在调用结束时清除堆栈中
的参数。 如何选择调用模式,有以下三条规则: 1Delphi30使用register模式作为缺省调用
模式以提高运行效率。 2如果有调用关系的几个模块是用不同语言编
写的,其接口应使用 stdcall模式。 3如果要实现双界面函数和过程,应使用safec
all模式。 所以解决我们的问题只要选用stdcall模式即可
, Schlumberger公司的《编程指南》上在Microsoft C环
境下的 DLL函数说明(仅举两例)为: void(FAR PASCAL *Imp_ Connect)(unsigned s
hort far*,short far*); void(FAR PASCAL *Imp_ Init)(short far*,s
hort far*); 相应的在Delphi30下DLL函数引入说明为: procedure Imp_ Connect(var CardAddress:wor
d;var CardHandle:smallint);stdcall; procedure Imp_ Init(var Poll_Tab:smallint;
var ErrorFlag:smallint;var CardHandle:smallint);st
dcall; 这样修改以后,程序即可正常运行(原来我们没
有说明调用模式,即使用缺省的 register模式),由此我
们也可得出一个经验:对一些高版本的新软件,使用时要
注意改进和扩充,并经常看看帮助文件,定会大有裨益。
具体可以看《DELPHI5开发人员指南》