Перенос структуры C на запись Delphi - PullRequest
5 голосов
/ 27 января 2012

Я хотел бы знать, как преобразовать C struct в Delphi record ?

Следующий код находится на C. Я хочу преобразовать в Delphi.

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

Заранее спасибо.

Ответы [ 2 ]

12 голосов
/ 27 января 2012

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;
3 голосов
/ 27 января 2012

Возможно, вам понадобится ключевое слово pack .По умолчанию Delphi будет выравнивать переменные на основе (я полагаю) того, разрабатываете ли вы на 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

...