海康设备中的NET_DVR_GetPlayBackOsdTime 这个函数在delphi中如何使用?

kciv 2018-08-21 10:00:50
函 数: BOOL NET_DVR_GetPlayBackOsdTime(LONG lPlayHandle, LPNET_DVR_TIME lpOsdTime)
参 数: [in]lPlayHandle
[out]lpOsdTime
播放句柄,NET_DVR_PlayBackByName 或
NET_DVR_PlayBackByTime_V40 的返回值
获取的OSD 时间的指针

以上是海康的说明书对这个函数的说明,以下是delphi 的函数。请问一下 var lpOsdTime: NET_DVR_TIME ,我应该怎么写?

function NET_DVR_GetPlayBackOsdTime(lPlayHandle: LongInt;
var lpOsdTime: NET_DVR_TIME): BOOL ;stdcall;external 'HCNetSDK.dll'


...全文
928 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 2018-08-24
  • 打赏
  • 举报
回复
//采用第一种方式,主要是考虑到保持函数的定义与c函数的定义一致, 使用方式如下:
var
PlayHandle: LongInt;
OsdTime: NET_DVR_TIME;
Rst: Boolean;
begin
Rst := NET_DVR_GetPlayBackOsdTime(PlayHandle, @OsdTime); //第一种方式
//Rst := NET_DVR_GetPlayBackOsdTime(PlayHandle, OsdTime); //第二种方式
end;
//其实两种方式是等效的,都是传OsdTime的地址。
//调用过程中不存在内存需要释放的问题。
SupermanTm 2018-08-23
  • 打赏
  • 举报
回复

function NET_DVR_GetPlayBackOsdTime(lPlayHandle: LongInt;
lpOsdTime: LPNET_DVR_TIME): Boolean; stdcall; external 'HCNetSDK.dll';



function NET_DVR_GetPlayBackOsdTime(lPlayHandle: LongInt;
var lpOsdTime: NET_DVR_TIME): Boolean; stdcall; external 'HCNetSDK.dll';

在 Delphi 的语法上是完全等效的,不过如二楼所说,后者比前者要好,因为调用者可声明为局部变量,调用返回后自动释放,对内存效率要高一些,而且也相对安全。
BlueStorm 2018-08-21
  • 打赏
  • 举报
回复

type
NET_DVR_TIME = record
dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond: Cardinal;
end;
LPNET_DVR_TIME = ^NET_DVR_TIME;

function NET_DVR_GetPlayBackOsdTime(lPlayHandle: LongInt;
lpOsdTime: LPNET_DVR_TIME): Boolean; stdcall; external 'HCNetSDK.dll';
  • 打赏
  • 举报
回复
如果参数lpOsdTime不允许为空指针,使用var参数更恰当,当然直接用指针也可以。使用变参的话,传入NET_DVR_TIME类型变量既可。
敬告:该系列的课程在抓紧录制更新,敬请大家关注。敬告:本课程项目仅供学习参考,请不要直接商用,概不负责任何法律责任。 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习使用FFmpeg开发视频监控项目,并动手操练。具体内容包括: 一、视频监控的架构和流程二、FFmpeg4.3+SDL2+Qt5开发环境的搭建三、FFmpeg的SDK编程回顾总结并操练四、SDL2.0的编程回顾总结并操练五、颜色空间转换RGB和YUV的原理与实战六、Qt5+FFmpeg本地摄像头采集预览实战七、代码封装:摄像头h264/5编码并存储八、Qt5+FFmpeg单路网络摄像头采集预览九、Qt5+FFmpeg单路网络摄像头采集预览录制会看十、onvif与GB/T-28181的简介  音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢?   因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。 所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。   梅老师从事音视频与流媒体行业18年;曾在永新视博、科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。  

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧