Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Выравнивание структур в Дельфи


Автор: Лапоть 26.4.2009, 08:34
Вот сишный код:
Код

#pragma pack (push, 1) // устанавливаю побайтовое выравнивание
struct TMapHeader {
  header char[32];
  scale integer;
  title char[64];
  sign char;          // без побайтового - размер поля будет таким, какое выравнивание установлено по умолчанию!
  // и так далее
};
#pragma pack (pop) // восстанавливаю выравнивание по умолчанию

Структура на Дельфи
Код

  TMapHeader : record
    header : array [0..31] of char;
    scale : integer;
    title : array [0..63] of char;
    sign : char;
    // .....
  end;

Т.е., без побайтового выравнивания на Си можно наступить на хорошие грабли при чтении-записи данных на диск! Как такая проблема (если она есть) решается на Дельфи?

Автор: Альт 26.4.2009, 09:52
такие структуры называются упакованными:
Код

  TMapHeader = packed record
    header : String[32];
    scale : integer;
    title : String[64];
    sign : char;
    // etc
  end;

Автор: Лапоть 26.4.2009, 11:48
Альт, спасибо!!! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)