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 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿