ltcumt1 2017-12-03 14:55 采纳率: 100%
浏览 810
已采纳

下面是C语言中的结构如何转化成Delphi语言?

typedef struct tagNET_DVR_ALARMINFO_FIXED_HEADER
{
/*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-写硬盘出错,6-遮挡报警,
7-制式不匹配, 8-非法访问,9-视频信号异常,10-录像异常,11-智能场景变化,12-阵列异常,13-前端/录像分辨率不匹配,
14-申请解码资源失败,15-智能侦测报警, 16-热备异常,17-录播主机报警,18-语音对讲请求报警,20-开启录像,21-关闭录像,22-车辆检测算法异常,23-脉冲报警,24-人脸库硬盘异常,25-人脸库变更,26-人脸库图片变更*/
DWORD dwAlarmType;//报警类型
NET_DVR_TIME_EX struAlarmTime; //发生报警的时间
union
{
BYTE byUnionLen[128];
struct
{
DWORD dwAlarmInputNo; //发生报警的报警输入通道号,一次只有一个
DWORD dwTrigerAlarmOutNum; /*触发的报警输出个数,用于后面计算变长数据部分中所有触发的报警输出通道号,四字节表示一个*/
DWORD dwTrigerRecordChanNum; /*触发的录像通道个数,用于后面计算变长数据部分中所有触发的录像通道号,四字节表示一个*/
}struIOAlarm; // 报警类型dwAlarmType为0时有效
struct
{
DWORD dwAlarmChanNum; /*发生报警通道数据个数,用于后面计算变长数据部分中所有发生的报警通道号,四字节表示一个*/
}struAlarmChannel; // dwAlarmType为2,3,6,9,10或13时有效
struct
{
DWORD dwAlarmHardDiskNum; /*发生报警的硬盘数据长度,用于后面计算变长数据部分中所有发生报警的硬盘号,四节表示一个*/
}struAlarmHardDisk; // dwAlarmType为1,4,5时有效
struct
{
BYTE bySubAlarmType; //报警子类型,1-一键延迟录像;
BYTE byRes1[3]; //保留
NET_DVR_TIME_EX struRecordEndTime; //录播结束时间
BYTE byRes[116]; //保留
}struRecordingHost; //录播主机专用报警
}uStruAlarm;
}NET_DVR_ALRAM_FIXED_HEADER, *LPNET_DVR_ALARM_FIXED_HEADER;

  • 写回答

3条回答 默认 最新

  • 堕落恶魔_Delphi 2018-01-04 08:54
    关注

    补充下格式

    type
      TstruIOAlarm = record
        dwAlarmInputNo: DWORD; //发生报警的报警输入通道号,一次只有一个
        dwTrigerAlarmOutNum: DWORD; // 触发的报警输出个数,用于后面计算变长数据部分中所有触发的报警输出通道号,四字节表示一个
        dwTrigerRecordChanNum: DWORD; // 触发的录像通道个数,用于后面计算变长数据部分中所有触发的录像通道号,四字节表示一个
      end;
      TstruAlarmChannel = record
        dwAlarmChanNum: DWORD; //发生报警通道数据个数,用于后面计算变长数据部分中所有发生的报警通道号,四字节表示一个
      end;
      TstruAlarmHardDisk = record
        dwAlarmHardDiskNum: DWORD; // 发生报警的硬盘数据长度,用于后面计算变长数据部分中所有发生报警的硬盘号,四节表示一个
      end;
      TstruRecordingHost = record
        bySubAlarmType: BYTE; //报警子类型,1-一键延迟录像;
        byRes1: Array[0..2] of BYTE; //保留
        struRecordEndTime: NET_DVR_TIME_EX; //录播结束时间
        byRes: Array[0..115] of BYTE; //保留
      end;
    
      tagNET_DVR_ALARMINFO_FIXED_HEADER = record
        dwAlarmType: DWORD; //报警类型
    //    struAlarmTime: NET_DVR_TIME_EX; //发生报警的时间
        case integer of
          0:
            (byUnionLen: array[0..127] of BYTE);
          1:
            (struIOAlarm: TstruIOAlarm); // 报警类型dwAlarmType为0时有效
          2:
            (struAlarmChannel: TstruAlarmChannel); // dwAlarmType为2,3,6,9,10或13时有效
          3:
            (struAlarmHardDisk: TstruAlarmHardDisk); // dwAlarmType为1,4,5时有效
          4:
            (struRecordingHost: TstruRecordingHost); //录播主机专用报警
      end;
      NET_DVR_ALRAM_FIXED_HEADER = tagNET_DVR_ALARMINFO_FIXED_HEADER;
      LPNET_DVR_ALARM_FIXED_HEADER = ^NET_DVR_ALRAM_FIXED_HEADER;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求