typedef struct
{
BYTE sSerialNumber[SERIALNO_LEN];
BYTE byAlarmInPortNum;
BYTE byAlarmOutPortNum;
BYTE byDiskNum;
BYTE byDVRType;
BYTE byChanNum;
BYTE byStartChan;
BYTE byAudioChanNum;
BYTE byIPChanNum;
BYTE byZeroChanNum;
BYTE byMainProto;
BYTE bySubProto;
BYTE bySupport; //, BYTE bySupport1; //
BYTE bySupport2; //
WORD wDevType; //设备型号
BYTE byMultiStream;//
BYTE byMultiStreamProto;//
BYTE byRes2[14]; //保留
}NET_DVR_DEVICEINFO_V30, *LPNET_DVR_DEVICEINFO_V30;NET_DVR_API LONG __stdcall NET_DVR_Login_V30(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo);//调用代码
NET_DVR_DEVICEINFO_V30 DeviceInfoTmp;
memset(&DeviceInfoTmp,0,sizeof(NET_DVR_DEVICEINFO_V30));
LONG lLoginID = NET_DVR_Login_V30(DeviceIp.GetBuffer(DeviceIp.GetLength()),m_nDevPort, \
m_csUser.GetBuffer(m_csUser.GetLength()),m_csPWD.GetBuffer(m_csPWD.GetLength()),&DeviceInfoTmp);上面是VC的代码,翻译成delphi不知道对不对啊 //设备参数结构体
LPNET_DVR_DEVICEINFO_V30 = ^NET_DVR_DEVICEINFO_V30;
NET_DVR_DEVICEINFO_V30 = packed record
sSerialNumber: array[0..47] of Byte; //序列号
byAlarmInPortNum, //报警输入个数
byAlarmOutPortNum, //报警输出个数
byDiskNum, //硬盘个数
byDVRType, //设备类型
byChanNum, //设备模拟通道个数
byStartChan, //起始通道号,目前设备通道号从1开始
byAudioChanNum, //设备主意通道数
byIPChanNum, //设备最大数字通道个数
byZeroChanNum, //零通道编码个数
byMainProto, //主玛流传输协议类型 0-private 1-rtsp
bySubProto, //子玛流传输协议类型 0-private 1-rtsp
bySupport, //能力 0-不支持 1-支持
bySupport1, //能力扩充 0-不支持 1-支持
bySupport2: Byte; //能力扩充 0-不支持 1-支持
wDevType: Word; //设备型号
byMultiStream, //支持多码流 0-不支持 1-支持
byMultiStreamProto: Byte; //多码流是否支持rtsp协议取流,按位表示,0-不支持,1-支持:bit0- 码流3,bit1- 码流4,依次类推
byRes2: array[0..13] of Byte; //保留,置0
end;
//下面是调用代码总是出地址越界,谁能告诉我是哪的错误
procedure TForm1.Button1Click(Sender: TObject);
var lUserID: LongInt;
DeviceInfo: LPNET_DVR_DEVICEINFO_V30;
begin
NET_DVR_Init();
New(DeviceInfo);
FillChar(DeviceInfo^, SizeOf(NET_DVR_DEVICEINFO_V30), 0); lUserID := NET_DVR_Login_V30(PChar(edtIP.Text), 8000, PChar('admin'), PChar('12345'), DeviceInfo);
if lUserID > 0 then
ShowMessage('login success')
else
ShowMessage('login failure');
end;
解决方案 »
- 动态创建的TImage,在关闭窗体时候报错,请问如何解决
- 请各位大侠给我一个Diamond-access的组件,谢谢了
- QuickRep的问题:如何在一个QuickRep的上面放置3个DetailBand,分别对应3个ADOQuery
- 如何把listbox的全部记录一次插入到数据库里面
- 如何计算当前日期一个月前的日期是多少?急
- 散分交友第五贴:为女神荣誉而战!
- 版本问题
- TSpeedButton?
- 控制第三方程序多级菜单问题
- 用CreateDesktop创建一个非交互状态的桌面(即不在屏幕上显示的桌面),怎样才能向其发送键盘和鼠标的输入消息和获取其桌面图像?
- 求助读取字符串长度的窗体
- delphi 如何追加和 读取多个 同结构的配置
NET_DVR_Login_V30 // 声明stdcall没有顺便一提 new了DeviceInfo 没有dispose