1、接口声明
//-------------------------------------------------------------------
// 功能:
// 连接读卡器
//
// 返回:
// TRUE:成功 FALSE:失败
//
// 参数:
// HANDLE &hFlashDisk 返回连接后的读卡器句柄(hFlashDisk初值为NULL)
// DWORD dwIndex 读卡器的索引号(0开始)
//
// 说明:
// 如果hFlashDisk不为NULL, 则直接返回NULL
//-------------------------------------------------------------------
BOOL OpenUDisk(HANDLE &hFlashDisk, int Index = 0);2、delphi声明和调用如下:
hCommDev:Pointer; //端口句柄,全局变量
//打开串口
function OpenUDisk(fhdisk:Pointer;Index:Integer):Boolean;cdecl; //
external 'TYInterface.dll'; if OpenUDisk(hCommDev,0) then
begin
Memo1.Lines.Add('打开成功'); end
else
begin
Memo1.Lines.Add('打开失败');
end;现在的问题是,当我无论如何声明参数,都报错,请问&hFlashDisk 应该声明什么类型好?问题出在哪里?
//-------------------------------------------------------------------
// 功能:
// 连接读卡器
//
// 返回:
// TRUE:成功 FALSE:失败
//
// 参数:
// HANDLE &hFlashDisk 返回连接后的读卡器句柄(hFlashDisk初值为NULL)
// DWORD dwIndex 读卡器的索引号(0开始)
//
// 说明:
// 如果hFlashDisk不为NULL, 则直接返回NULL
//-------------------------------------------------------------------
BOOL OpenUDisk(HANDLE &hFlashDisk, int Index = 0);2、delphi声明和调用如下:
hCommDev:Pointer; //端口句柄,全局变量
//打开串口
function OpenUDisk(fhdisk:Pointer;Index:Integer):Boolean;cdecl; //
external 'TYInterface.dll'; if OpenUDisk(hCommDev,0) then
begin
Memo1.Lines.Add('打开成功'); end
else
begin
Memo1.Lines.Add('打开失败');
end;现在的问题是,当我无论如何声明参数,都报错,请问&hFlashDisk 应该声明什么类型好?问题出在哪里?
试试
HANDLE &hFlashDisk =
hFlashDisk: PHandle 或者 PCardinal,PDWORD
HANDLE & 是一个指向32位无符号的指针,具体就是设备句柄指针
这样会学习的很快的
function OpenUDisk(fhdisk:PHandle; Index: Integer=0):Boolean;cdecl; external 'TYInterface.dll';
感觉上也就两种写法了。
我感觉需要注意的地方就是cdecl这里,因为看不到你的c的定义源码,到底是cdecl,还是stdcall需要进一步的确认。调用的时候
var
hCommDev:Thandle;
begin
OpenUDisk(@hCommDev,0)
end;