[英]Convert C struct to Delphi
如何将该结构转换为Delphi?
typedef struct a_config {
union {
struct {
char mode[10];
char name[10];
} dn;
struct {
int r;
} sm;
struct {
int r;
} xo;
} config;
} a_config_t;
并集等于记录case of
构造的case of
。 并非所有事物都可以1:1翻译,但是可以。
请注意,包装是一个单独的问题。 虽然在这种情况下可能再也不是问题。
type
a_config_t = record
config : record
case integer of
0:(dn: record
mode : array[0..9] of ansichar;
name : array[0..9] of ansichar;
end);
1: (sm: record
r: integer;
end);
2: (xo: record
r: integer;
end);
end;
end;
// Delphi has no eq for "struct x" in "struct x {} y" construct, only for the y
a_config = a_config_t;
AC / C ++联合类似于Delphi变体记录。 直译是:
type
dn_t = record
mode, name: array [0..9] of AnsiChar;
end;
sm_t = record
r: integer;
end;
xo_t = record
r: integer;
end;
a_config = record
case integer of
0: (dn: dn_t);
1: (sm: sm_t);
2: (xo: xo_t);
end;
在文档中阅读有关变体记录的更多信息: http : //docwiki.embarcadero.com/RADStudio/en/Structured_Types#Variant_Parts_in_Records
在这种情况下,您可以通过删除嵌套记录来简化翻译:
type
a_config = record
case integer of
0: (mode, name: array [0..9] of AnsiChar);
1: (r: integer);
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.