下面是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个回答

补充下格式

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;

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;

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐