首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求:C++ 结构体嵌套联合体嵌套结构体 代码翻译为 PAS:40分

2013-09-26 
求高手指点:C++ 结构体嵌套联合体嵌套结构体 代码翻译为 PAS:40分.h 文件中有一段结构体嵌套联合体嵌套结

求高手指点:C++ 结构体嵌套联合体嵌套结构体 代码翻译为 PAS:40分
.h 文件中有一段结构体嵌套联合体嵌套结构体的定义,应该如何转换为PAS中的结构体?

/* 控制网络文件回放 */
typedef struct 
{
DWORD dwSize;
char sDecoderIP[16];/* DVR IP地址 */
WORD wDecoderPort;/* 端口号 */
WORD wLoadMode;/* 回放下载模式 1-按名字 2-按时间 */
union
{
BYTE byFile[100];/* 回放的文件名 */
struct
{
DWORD dwChannel;
BYTE sUserName[NAME_LEN];/*请求视频用户名*/
BYTE sPassword[PASSWD_LEN];/* 密码 */
NET_DVR_TIME struStartTime;/* 按时间回放的开始时间 */
NET_DVR_TIME struStopTime;/* 按时间回放的结束时间 */
}bytime;
}mode_size;
}NET_DVR_PLAYREMOTEFILE, *LPNET_DVR_PLAYREMOTEFILE;

对这种多级嵌套的结构体,联合体 应该怎样翻译为DELPHI pas语句? 请高手帮忙翻译一下。

看过这个帖子:http://bbs.csdn.net/topics/100137483 也没看出个事情来。 小弟混地不好,40分送上。 C++ Structure UNION 记录
[解决办法]
用变体记录就可以了。

const
  NAME_LEN = ...  // 需要你自己定义
  PASSWD_LEN = ...  // 需要你自己定义

type
  dword = cardinal;  // dword类型定义在windows单元
  NET_DVR_TIME = ...  // // 需要你自己定义

  tbytime = record
    dwChannel: dword;
    sUserName: array[0..NAME_LEN - 1] of ansichar; //*请求视频用户名*/
    sPassword: array[0..PASSWD_LEN - 1] of ansichar; //* 密码 */
    struStartTime: NET_DVR_TIME; //* 按时间回放的开始时间 */
    struStopTime: NET_DVR_TIME; //* 按时间回放的结束时间 */
  end;

  tmode_size = record
  case integer of
    0: (byFile: array[0..99] of ansichar);
    1: (bytime: tbytime);
  end;

  LPNET_DVR_PLAYREMOTEFILE = ^NET_DVR_PLAYREMOTEFILE;
  NET_DVR_PLAYREMOTEFILE = record


    dwSize: dword;
    sDecoderIP: array[0..15] of ansichar; //* DVR IP地址 */
    wDecoderPort: word; //* 端口号 */
    wLoadMode: word; //* 回放下载模式 1-按名字 2-按时间 */
    modesize: tmode_size;
  end;

热点排行