如何将大华监控 sdk 中的定义,VC 转成 Delphi?(100)

  • 主题发起人 主题发起人 wendeyuan
  • 开始时间 开始时间
W

wendeyuan

Unregistered / Unconfirmed
GUEST, unregistred user!
/************************************************************************ ** 结构体定义 ***********************************************************************/// 时间typedef struct { DWORD dwYear; // 年 DWORD dwMonth; // 月 DWORD dwDay; // 日 DWORD dwHour; // 时 DWORD dwMinute; // 分 DWORD dwSecond; // 秒} NET_TIME,*LPNET_TIME;// 录像文件信息typedef struct{ unsigned int ch; // 通道号 char filename[128]; // 文件名 unsigned int size; // 文件长度 NET_TIME starttime; // 开始时间 NET_TIME endtime; // 结束时间 unsigned int driveno; // 磁盘号 unsigned int startcluster; // 起始簇号 int nRecordFileType; // 录象文件类型 0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片} NET_RECORDFILE_INFO, *LPNET_RECORDFILE_INFO;// 查询时间段内的所有录像文件CLIENT_API BOOL CALL_METHOD CLIENT_QueryRecordFile(LONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char* pchCardid, LPNET_RECORDFILE_INFO nriFileinfo, int maxlen, int *filecount, int waittime=1000, BOOL bTime = FALSE);//=========================================================================================================================== Dahua: NETSDK CLIENT_QueryRecordFile查询录像文件BOOL CLIENT_QueryRecordFile( LONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char *pchCardid, LPNET_RECORDFILE_INFO nriFileinfo, int maxlen, int *filecount, int waittime=1200, bool bTime=false);Parameters[in]lLoginID CLIENT_Login的返回值 [in]nChannelId 通道ID,从0开始 [in]nRecordFileType 录像文件类型,如下表: 数值 录象文件类型 0 所有录像文件 1 外部报警 2 动态检测报警 3 所有报警 4 卡号查询 5 组合条件查询 8 按卡号查询图片(目前仅HB-U和NVS特殊型号的设备支持) 9 查询图片(目前仅HB-U和NVS特殊型号的设备支持) [in]tmStart 录像开始时间 [in]tmEnd 录像结束时间 [in]pchCardid 卡号,只针对卡号查询有效,其他情况下可以填NULL [out]nriFileinfo 返回的录像文件信息,是一个NET_RECORDFILE_INFO结构数组 [in]maxlen nriFileinfo缓冲的最大长度;(单位字节,建议在100-200*sizeof(NET_RECORDFILE_INFO)之间). [out]filecount 返回的文件个数,属于输出参数最大只能查到缓冲满为止的录像记录;
[in]waittime 等待时间 [in]bTime 是否按时间查(目前无效) Return Values成功返回TRUE,失败返回FALSE.
 
/************************************************************************ ** 结构体定义 ***********************************************************************/// 时间Type PNET_TIME=^TNET_TIME;
TNET_TIME=record dwYear,dwMonth,dwMonth,dwDay,dwHour,dwHour,dwMinute,dwSecond:DWORD;
end;
// 录像文件信息 PNET_RECORDFILE_INFO=^TNET_RECORDFILE_INFO;
TNET_RECORDFILE_INFO=record ch:Integer;
// 通道号 filename:array[0..128-1] of ansichar;
// 文件名 size:Integer;
// 文件长度 starttime:TNET_TIME;
// 开始时间 endtime:NET_TIME;
// 结束时间 driveno:Integer;
// 磁盘号 startcluster:Integer;
// 起始簇号 nRecordFileType:Integer;
// 录象文件类型 0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片end;
// 查询时间段内的所有录像文件CLIENT_QueryRecordFile(lLoginID,nChannelId,nRecordFileType:Integer;tmStart,tmEnd: PNET_TIME;pchCardid :Pansichar, nriFileinfo:PNET_RECORDFILE_INFO ;maxlen:integer;var filecount:Integer;const waittime:integer=1000;
const bTime :Boolean= FALSE):boolean;
stdcall;
//这里stdcall可能是cdecl;//---------CLIENT_PlayBackByRecordFile( lLoginID:integer;
lpRecordFile:PNET_RECORDFILE_INFO;
hWnd:HWND ;
cbDownLoadPos:fDownLoadPosCallBack ;//fDownLoadPosCallBack 没看到定义 dwUserData:DWORD):integer;
随手弄的,没测试,可适当修改
 
大富翁:免费劳动力市场CSDN:床上等你
 
哈哈,楼上有意思
 
原来是指针弄错了,经修改,已可以了。谢谢 风铃夜思雨现贴上调试后源码。。============================================================//定义://----------------------------------------- //时间 NET_TIME = record dwYear: DWORD;
// 年 dwMonth: DWORD;
// 月 dwDay: DWORD;
// 日 dwHour: DWORD;
// 时 dwMinute: DWORD;
// 分 dwSecond: DWORD;
// 秒 end;

LPNET_TIME = ^NET_TIME;
//录像文件信息 NET_RECORDFILE_INFO = record ch: integer;
// 通道号 filename: array[0..127] of char;
// 文件名 size: integer;
// 文件长度 starttime: NET_TIME;
// 开始时间 endtime: NET_TIME;
// 结束时间 driveno: integer;
// 磁盘号 startcluster: integer;
// 起始簇号 nRecordFileType: integer;
// 录象文件类型 0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片 end;

LPNET_RECORDFILE_INFO = ^NET_RECORDFILE_INFO;// 查询时间段内的所有录像文件function CLIENT_QueryRecordFile ( lLoginID: LongInt;
nChannelId: integer;
nRecordFileType: integer;
tmStart: LPNET_TIME;
tmEnd: LPNET_TIME;
pchCardid: Pchar;
nriFileinfo: LPNET_RECORDFILE_INFO;
maxlen: integer;
filecount: Pinteger;
waittime: integer;
bTime: LongBool ): LongBool;
stdcall;
External 'dhnetsdk';//调用//-----------------------------------------procedure TForm1.Button6Click(Sender: TObject);var t1, t2: NET_TIME;
pt1, pt2: LPNET_TIME;
nMaxLen: LongInt;
cnt, i: integer;
Pcnt: Pinteger;
begin
t1.dwYear := 2009;
t1.dwMonth := 3;
t1.dwDay := 16;
t1.dwHour := 12;
t1.dwMinute := 12;
t1.dwSecond := 12;
pt1 := @t1;
t2.dwYear := 2009;
t2.dwMonth := 3;
t2.dwDay := 17;
t2.dwHour := 12;
t2.dwMinute := 12;
t2.dwSecond := 12;
pt2 := @t2;
nMaxLen := 200 * sizeof(NET_RECORDFILE_INFO);
cnt := 0;
pcnt := @cnt;
if CLIENT_QueryRecordFile(devHandle[1], 0, 0, pt1, pt2, 0, pnfo, nMaxLen, pcnt, 5000, false) then
begin
memo1.Clear;
for i := 0 to cnt - 1do
begin
memo1.Lines.Add ( inttostr(i + 1) + #9 + format('%d-%d-%d %d:%d:%d', [ nfo.starttime.dwYear , nfo.starttime.dwMonth , nfo.starttime.dwDay , nfo.starttime.dwHour , nfo.starttime.dwMinute , nfo.starttime.dwSecond ]) + #9 + format('%d-%d-%d %d:%d:%d', [ nfo.endtime.dwYear , nfo.endtime.dwMonth , nfo.endtime.dwDay , nfo.endtime.dwHour , nfo.endtime.dwMinute , nfo.endtime.dwSecond ]) + #9 + inttostr(nfo.size) + #9 + inttostr(nfo.driveno) );
end;

end;

end;
 
后退
顶部