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

下面是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条回答 默认 最新

  • hskill
    堕落恶魔_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;
    
    
    点赞 评论
  • hskill
    堕落恶魔_Delphi 2018-01-04 08:53

    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;

    点赞 评论
  • hskill
    堕落恶魔_Delphi 2018-01-04 08:55

    // struAlarmTime: NET_DVR_TIME_EX; //发生报警的时间

    这行前面的注释去掉, 忘了

    点赞 评论

相关推荐