2012-01-27 95 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