DLL是C寫的,函式說明是:
int SDK_KPReadGuestCard(LPSTR p_csRoomNo,LPSTR p_csStartTime,int &p_nTimeUnit,int &p_nTimeLength,int &p_nStopFlag,LPSTR p_csCardNo);
范例是VB的,參考是
Public Declare Function SDK_KPReadGuestCard Lib "KPLOCKSDK.dll" (ByVal p_csRoomNo$, ByVal p_csStartTime$, ByRef p_nTimeUnit As Long, ByRef p_nTimeLentgh As Long, ByRef p_nStopFlag As Long, ByVal p_csCardNo$) As Long
但是因為我沒有VB,也不知道范例是否正確。
我用DELPHI呼叫的申明是:
Function SDK_KPReadGuestCard(p_csRoomNo:PCHAR; p_csStartTime: PCHAR; var p_nTimeUnit: longint; var p_nTimeLength: longint;
var p_nStopFlag: longint; p_csCardNo: PCHAR): LongInt; Stdcall; External 'KPLOCKSDK.dll';
呼叫程序是:
Var
StrCardSn: Array[0..64] Of Char;
StrRoomNo: Array[0..64] Of Char;
StrStartTime: Array[0..64] Of Char;
StrInfo: String;
iTimeCount: longint;
iTime: longint;
iLost: longint;
Begin
Ret := SDK_KPReadGuestCard(StrRoomNo, StrStartTime, iTimeCount, iTime, iLost, StrCardSn);
If Ret <> 1 Then
Begin
Result := Pchar(CheckErr(Ret));
exit;
End;
end;
但是運行后報記憶體錯。估計是我的參考不對,但是諸多嘗試,均未能通過。求高手指點啊。100分贈送,在線等待。
uj5u.com熱心網友回復:
Function SDK_KPReadGuestCard(p_csRoomNo:PCHAR; p_csStartTime: PCHAR; var p_nTimeUnit: longint; var p_nTimeLength: longint;var p_nStopFlag: longint; p_csCardNo: PCHAR): LongInt; Stdcall; External 'KPLOCKSDK.dll';
字串應該沒有問題,但是整型這個應該定義的有問題,這也是個指標,用PInteger型別代替
Function SDK_KPReadGuestCard(p_csRoomNo:PCHAR; p_csStartTime: PCHAR;p_nTimeUnit: PInteger; _nTimeLength: PInteger; p_nStopFlag: PInteger; p_csCardNo: PCHAR): LongInt; Stdcall; External 'KPLOCKSDK.dll';
呼叫的時候
定義PInteger指標
iLength:^Integer;
使用
SDK_KPReadGuestCard(......., @iLength,....);
uj5u.com熱心網友回復:
看你的宣告好像沒問題,但p_csRoomNo似乎是要初始化給個房間號,傳進去給函式用的.你似乎沒有給初始值.
uj5u.com熱心網友回復:
Function SDK_KPReadGuestCard(p_csRoomNo:PCHAR; p_csStartTime: PCHAR; var p_nTimeUnit: longint; var p_nTimeLength: longint;var p_nStopFlag: longint; p_csCardNo: PCHAR): LongInt; codecl; External 'KPLOCKSDK.dll';
uj5u.com熱心網友回復:
Ret := SDK_KPReadGuestCard(StrRoomNo, StrStartTime, iTimeCount, iTime, iLost, StrCardSn);改下
Ret := SDK_KPReadGuestCard(StrRoomNo, StrStartTime, integer(@iTimeCount),integer(@ iTime),integer(@ iLost), StrCardSn);
&在C里面是參考型別,屬于傳地址一類吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103135.html
標籤:語言基礎/算法/系統設計
