繁体   English   中英

将C结构转换为Delphi

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM