2012-01-27 97 views
4

我想知道如何将C结构转换为Delphi记录将C结构迁移到Delphi记录

以下代码在C.我想转换为Delphi。

typedef struct 
    { 
    Uint16  value1[32]; 
    Uint16  value2[22]; 
    Uint16  value3[8];  
    }MY_STRUCT_1; 

在此先感谢。

回答

11

Uint16相当于Word类型,[]表示一个数组。

MY_STRUCT_1 = record 
    value1 : Array [0..31] of Word; 
    value2 : Array [0..21] of Word; 
    value3 : Array [0..7] of Word; 
end; 
+0

感谢的快速反应。它帮助我很多。欢呼 – sMah 2012-01-27 05:09:13

2

您可能需要使用的包装关键字。德尔福,默认情况下,将根据(我相信)你是否正在开发一个16,32或64位平台和什么数据类型在您的记录中的变量对齐。使用打包将改变保存记录所需的内存的长度/大小。 C会默认打包结构。

MY_STRUCT_1 = packed record 
    value1 : Array [0..31] of Word; 
    value2 : Array [0..21] of Word; 
    value3 : Array [0..7] of Word; 
end; 

参见: http://www.delphibasics.co.uk/RTL.asp?Name=Packed

+3

上面的记录不需要'packed'说明符。现代的Delphi版本使用与C/C++编译器相同的对齐规则。 – kludg 2012-01-27 05:59:51

+0

在Delphi 5中怎么样? '包装'是否仍然需要使用? – sMah 2012-02-01 04:30:27

+0

正如[维基百科](http://en.wikipedia.org/wiki/Data_structure_alignment#Typical_alignment_of_C_structs_on_x86)中所述,C结构默认不打包(编译器添加填充)。 – Jonaias 2014-06-30 18:40:52