悠
悠悠蓝天
Unregistered / Unconfirmed
GUEST, unregistred user!
Type
LPNET_DVR_PICCFG = ^NET_DVR_PICCFG;
NET_DVR_PICCFG = record
dwSizeWORD
// 此结构的大小
sChanName: ByteArr
// 通道名称
dwVideoFormatWORD
// 只读 视频制式 1-NTSC 2-PAL */
byBrightness:BYTE
//*亮度,0-255*/
byContrast:BYTE
//*对比度,0-255*/
bySaturation:BYTE
//*饱和度,0-255 */
byHue:BYTE
//*色调,0-255*/
//显示通道名
dwShowChanNameWORD
//*预览的图象上是否显示通道名称,0-不显示,1-显示区域大小 704*576*/
wShowNameTopLeftX:WORD
//* 通道名称显示位置的 x 坐标 */
wShowNameTopLeftY:WORD
//* 通道名称显示位置的 y坐标 */
//信号丢失报警
struVILost:NET_DVR_VILOST;
//移动侦测
struMotion:NET_DVR_MOTION;
//遮挡报警
strHideAlarm:NET_DVR_HIDEALARM;
//遮挡 区域大小 704*576
dwEnableHideWORD
//* 是否启动遮挡 ,0-否,1-是*/
wHideAreaTopLeftX:WORD
//* 遮挡区域的 x 坐标 */
wHideAreaTopLeftY:WORD
//* 遮挡区域的 y坐标 */
wHideAreaWidth:WORD
//* 遮挡区域的宽 */
wHideAreaHeight:WORD
//*遮挡区域的高*/
//OSD
dwShowOsd:WORD
//* 预览的图象上是否显示 OSD,0-不显示,1-显示 */
wOSDTopLeftX:WORD
//* OSD的 x坐标 */
wOSDTopLeftY:WORD
//* OSD的 y坐标 */
byOSDType:BYTE
//* OSD类型(主要是年月日格式) */
//* 0: XXXX-XX-XX 年月日 */
//* 1: XX-XX-XXXX 日月年 */
//* 2: XXXX年 XX月 XX日 */
//* 3: XX月 XX日 XXXX 年 */
byDispWeek:BYTE
//* 是否显示星期 */
byOSDAttrib:BYTE
//* OSD属性:透明,闪烁 */
//* 1: 透明,闪烁 */
//* 2: 透明,不闪烁 */
//* 3: 闪烁,不透明 */
//* 4: 不透明,不闪烁 */
end;
{--------------------------------------------------------------------
功能:获取硬盘录像机的参数
参数说明
lUserID:NET_DVR_Login ()的返回值
dwCommand:参数类型
lChannel:通道号,如果不是通道参数,lChannel 不用,置为-1 即可
lpOutBuffer:存放输出参数的缓冲区
dwOutBufferSize:缓冲区的大小
lpBytesReturned:实际返回的缓冲区大小
返回值:TRUE 表示成功,FALSE 表示失败。
---------------------------------------------------------------------}
function NET_DVR_GetDVRConfig(lUserID:LONGint;dwCommandWord;lChannel:longint;lpOutBufferointer;dwOutBufferSizeWORD;lpBytesReturned:LPDWORD):boolean;stdcall
external 'HCNetSDK.dll';
上面是一个开发包(VC)中的定义,我把它改成delphi语言了。
现在的问题是
procedure Tform1.SetChanName(iChanID:longint;NewName:string);
var
piccfg:LPNET_DVR_PICCFG;
sWordword;
i:integer;
ss:string;
begin
new(piccfg)
//分配空间
NET_DVR_GetDVRConfig(m_lUserID,NET_DVR_GET_PICCFG,1,piccfg,PICCFG_SIZE,@sWord);
..........
.......
[red] dispose(piccfg);[/red] [yellow]//出错!!!![/yellow]
end;
NET_DVR_GetDVRConfig执行了,而且返回了true,但是一调用这个函数就会指针报错。
如果调用NET_DVR_GetDVRConfig会指针报错,释放不了。project raised exception class EIValidPointer with message 'Invalid pointer operation'Process stopped.
困挠小女子好多天了,大哥们帮帮忙。!!!
LPNET_DVR_PICCFG = ^NET_DVR_PICCFG;
NET_DVR_PICCFG = record
dwSizeWORD
// 此结构的大小
sChanName: ByteArr
// 通道名称
dwVideoFormatWORD
// 只读 视频制式 1-NTSC 2-PAL */
byBrightness:BYTE
//*亮度,0-255*/
byContrast:BYTE
//*对比度,0-255*/
bySaturation:BYTE
//*饱和度,0-255 */
byHue:BYTE
//*色调,0-255*/
//显示通道名
dwShowChanNameWORD
//*预览的图象上是否显示通道名称,0-不显示,1-显示区域大小 704*576*/
wShowNameTopLeftX:WORD
//* 通道名称显示位置的 x 坐标 */
wShowNameTopLeftY:WORD
//* 通道名称显示位置的 y坐标 */
//信号丢失报警
struVILost:NET_DVR_VILOST;
//移动侦测
struMotion:NET_DVR_MOTION;
//遮挡报警
strHideAlarm:NET_DVR_HIDEALARM;
//遮挡 区域大小 704*576
dwEnableHideWORD
//* 是否启动遮挡 ,0-否,1-是*/
wHideAreaTopLeftX:WORD
//* 遮挡区域的 x 坐标 */
wHideAreaTopLeftY:WORD
//* 遮挡区域的 y坐标 */
wHideAreaWidth:WORD
//* 遮挡区域的宽 */
wHideAreaHeight:WORD
//*遮挡区域的高*/
//OSD
dwShowOsd:WORD
//* 预览的图象上是否显示 OSD,0-不显示,1-显示 */
wOSDTopLeftX:WORD
//* OSD的 x坐标 */
wOSDTopLeftY:WORD
//* OSD的 y坐标 */
byOSDType:BYTE
//* OSD类型(主要是年月日格式) */
//* 0: XXXX-XX-XX 年月日 */
//* 1: XX-XX-XXXX 日月年 */
//* 2: XXXX年 XX月 XX日 */
//* 3: XX月 XX日 XXXX 年 */
byDispWeek:BYTE
//* 是否显示星期 */
byOSDAttrib:BYTE
//* OSD属性:透明,闪烁 */
//* 1: 透明,闪烁 */
//* 2: 透明,不闪烁 */
//* 3: 闪烁,不透明 */
//* 4: 不透明,不闪烁 */
end;
{--------------------------------------------------------------------
功能:获取硬盘录像机的参数
参数说明
lUserID:NET_DVR_Login ()的返回值
dwCommand:参数类型
lChannel:通道号,如果不是通道参数,lChannel 不用,置为-1 即可
lpOutBuffer:存放输出参数的缓冲区
dwOutBufferSize:缓冲区的大小
lpBytesReturned:实际返回的缓冲区大小
返回值:TRUE 表示成功,FALSE 表示失败。
---------------------------------------------------------------------}
function NET_DVR_GetDVRConfig(lUserID:LONGint;dwCommandWord;lChannel:longint;lpOutBufferointer;dwOutBufferSizeWORD;lpBytesReturned:LPDWORD):boolean;stdcall
external 'HCNetSDK.dll';
上面是一个开发包(VC)中的定义,我把它改成delphi语言了。
现在的问题是
procedure Tform1.SetChanName(iChanID:longint;NewName:string);
var
piccfg:LPNET_DVR_PICCFG;
sWordword;
i:integer;
ss:string;
begin
new(piccfg)
//分配空间
NET_DVR_GetDVRConfig(m_lUserID,NET_DVR_GET_PICCFG,1,piccfg,PICCFG_SIZE,@sWord);
..........
.......
[red] dispose(piccfg);[/red] [yellow]//出错!!!![/yellow]
end;
NET_DVR_GetDVRConfig执行了,而且返回了true,但是一调用这个函数就会指针报错。
如果调用NET_DVR_GetDVRConfig会指针报错,释放不了。project raised exception class EIValidPointer with message 'Invalid pointer operation'Process stopped.
困挠小女子好多天了,大哥们帮帮忙。!!!