VC代碼轉換Delphi
VC定義:
// 開啟道閘引數(對應DH_CTRL_OPEN_STROBE命令)
typedef struct tagNET_CTRL_OPEN_STROBE
{
DWORD dwSize;
int nChannelId; // 通道號
char szPlateNumber[MAX_PLATENUMBER_LEN]; // 車牌號碼
} NET_CTRL_OPEN_STROBE;
// 設備控制函式原型
CLIENT_API BOOL CALL_METHOD CLIENT_ControlDevice(LLONG lLoginID, CtrlType type, void *param, int waittime = 1000);
VC代碼:
NET_CTRL_OPEN_STROBE stuAccessPara = { sizeof(stuAccessPara) };
stuAccessPara.nChannelId = thisVideo.index;
bool bret = CLIENT_ControlDevice(thisVideo.LoginID, DH_CTRL_OPEN_STROBE, &stuAccessPara);
Delphi定義:
type
LPNET_CTRL_OPEN_STROBE = ^NET_CTRL_OPEN_STROBE ;
NET_CTRL_OPEN_STROBE = record
dwSize : DWORD;
nChannelId : Integer;
szPlateNumber : Array [0..40-1] of Char;
end;
// 設備控制
Function CLIENT_ControlDevice( lLoginID : LongInt;CtrlType :tCtrlType ; param :Pointer; const waittime :integer= 1000): Boolean; stdcall External 'dhnetsdk';
var
aa :LPNET_CTRL_OPEN_STROBE;
Rest :Boolean;
begin
AA:= New(LPNET_CTRL_OPEN_STROBE);
aa.dwSize :=sizeof(NET_CTRL_OPEN_STROBE);
aa.nChannelId :=0;
//aa.szPlateNumber :='ABCD';
Rest :=CLIENT_ControlDevice(devHandle,DH_CTRL_OPEN_STROBE,AA);
if Rest then
Memo1.Lines.Add('開閘成功')
else
Memo1.Lines.Add('開閘失敗')
end;
CLIENT_ControlDevice函式不報錯,但是也不回傳正確結果
uj5u.com熱心網友回復:
LLONG的定義是啥,也許是long long?uj5u.com熱心網友回復:
LLONG lLoginID 這個定義成lLoginID : LongInt 沒有問題uj5u.com熱心網友回復:
可能出問題的基本就這么幾種,資料型別、呼叫約定、結構對齊...轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47722.html
標籤:VCL組件開發及應用
