有一个用VC写的设备连接函数
HD_OpenPort(short PortNo,unsigned long Baud, short Parity, HANDLE *devNo);
我用DELPHI向*devNo赋值,应该使用什么变量类型?
PLongint和THandle型我都试过了,不行。
HD_OpenPort(short PortNo,unsigned long Baud, short Parity, HANDLE *devNo);
我用DELPHI向*devNo赋值,应该使用什么变量类型?
PLongint和THandle型我都试过了,不行。
解决方案 »
- 请问如何遍历硬盘里面某一后缀名的文件,查找到之后进行删除操作?
- d6和d7共存的问题?
- 在Delphi中用什么方法处理*.png图形文件?
- 低级问题
- 有没有上海的朋友合装有线通?
- 请问:ACCESS数据库导入到ORACLE中的最佳解决办法???
- ZIPTV控件解压.TAR.Z文件后成为一.tar.txt文件,请问该文件如解再解开?
- 如何将TABLE中的DATABASENAME设置为工作组为YIFEI,计算机名为2000SERVER的D盘目录CG,这个目录如何写?
- 在线:如何简单实现从Excel导入资料入数据库,问题解决另外给分200
- 如何得到任意一个文件的文件类型?
- 转盘游戏(高手指教)
- 如何修改里诺仓库管理系统?
var
hnd: THandle;
HD_OpenPort(..., ..., ..., @hnd);
上面的就是正解
var
hnd: THandle;
HD_OpenPort(..., ..., ..., @hnd);方法没错。
我的工作是要先从VCDLL2中取值,通过DelphiDLL中转,到VCDLL1中。
两边VC都是Handle型,我想在DelphiDLL中同时完成取和传。
dext说的:
HD_OpenPort(PortNo: SmallInt; Baud: Cardinal; Parity: SmallInt; var devNo: THandle);
能够实现么?我现在用的就是这种,总是系统错误。
注意函数是否加了 stdcall; 要不然出错
//如果在delphi中,函数引用声明成这样:
HD_OpenPort(PortNo: SmallInt; Baud: Cardinal; Parity: SmallInt; devNo: PHandle);
//那么这样调用没问题:
var
hnd: THandle;
HD_OpenPort(..., ..., ..., @hnd);
////////////////////////////////////////////
//如果在delphi中,函数引用声明成这样:
HD_OpenPort(PortNo: SmallInt; Baud: Cardinal; Parity: SmallInt; var devNo: THandle);
那么要这样调用:
var
hnd: THandle;
HD_OpenPort(..., ..., ..., hnd); //这时自动把hnd的地址传给dll
我搞不清楚,本来HANDLE一般就是一个指针了,为什么还要变成指针的指针!!!
想这样:
VOID PASCAL CloseCommPort(HANDLE hCom)
功能说明:关闭指定的串行通信端口。
参数说明: hCom 为端口句柄
返回值:无
Handle 不是指针,是Integer
函数要改变调用者的值就必然要申明成引用或指针
上面不是说了,为什么不加stdcall;
下面才是对的
HD_OpenPort(PortNo: SmallInt; Baud: Cardinal; Parity: SmallInt; devNo: PHandle); stdcall;