C++ union转换成delphi
大家好,我想问下以下这种C++结构应该怎样转换成delphi的结构
typedef struct tmPlayControlCfg_t
{
unsigned intdwSize;//本结构大小
unsigned intdwCommand;//控制命令
union
{
tmTimeInfo_tstruTime;//文件的开始时间
intiPlayData;//播放参数
intiSpeed;//播放的速度
intiEnableAudio;//音频开关
intiCurrentPosition;//新的播放位置(帧)
unsigned intdwCurrentTime;//新的播放位置(毫秒)
BOOLbForward;//前进单帧
BOOLbClearDisplay;//清空显示
struct
{
unsigned charbyAutoCreateIndex;//是否自动生成索引
unsigned charbyAutoPlay;//打开后是否自动播放
unsigned charbyTemp[2];
charsFileName[128];//切换到文件名
}file;
struct
{
tmAvIndexEntry_t*pAvIndex;//索引缓冲
intiAvIndexCount;//缓冲中的索引数
intiAvIndexMaxCount;//缓冲的总索引数
}index;
}control;
}tmPlayControlCfg_t;
[解决办法]
你这里面的嵌套定义拆出来单独定义应该就可以了
[解决办法]
type
tmPlayControlCfg_t = record
dwSize: cardinal;
dwCommand: cardinal;
control: record
case integer of
0: (struTime: tmTimeInfo_t;);
1: (iPlayData: integer;);
2: (iSpeed: integer;);
3: (iEnableAudio: integer;);
4: (iCurrentPosition: integer);
5: (dwCurrentTime: cardinal);
6: (bForward: boolean);
7: (bClearDisplay: boolean);
8: (file: record
byAutoCreateIndex: byte;
byAutoPlay: byte;
byTemp: array[0..1] of byte;
sFileName: array[0..128] of char;
end;);
9: (index: record
pAvIndex: ^tmAvIndexEntry_t;
iAvIndexCount: integer;
iAvIndexMaxCount: integer;
end;);
end;
end;