Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
$Align
Деректива компилятора
Определяет данные будут выровнены или запакованы unit
  
1 {$Align Off}

2 {$Align On}
Описание
Директива компилятора $Align определяет, выравнивает ли Delphi данные, или он упаковывает данные в наименьшее пространство.

С $Align On (значение по умолчанию), сложные типы данных, такие как записи выравнивают свои элементы по 2, 4 или 8-байтовой границе, соответствующе типу данных. Например, поле Word было бы выровнено по 4-байтовой границе.

С $Align On, значение по умолчанию, Вы можете отменить эту установку с опцией packed для сложных структур данных.

Эти выравнивания гарантируют оптимальную работу доступа.

$Align Off сообщает Delphi об игнорировании выравнивания, и таким образом он упаковывать данные.
Примечания
Примеры неупакованных выравниваний:

Word = 2 байта
LongWord = 4 байта
Single = 4 байта
Double = 8 байтов

$Align эквивалентна $A.

Эта директива может использоваться в пределах вашего кода множество раз.

Значение по умолчанию - $Align On
Похожие команды
$A  Определяет данные будут выровнены или запакованы

Packed  Уплотняет сложные типы данных в минимальный объём памяти

 
Пример кода : Упаковка записи для уменьшения памяти
type
  // Используйте настройки по умолчанию : $A+
  // Объявление неупакованной, выровненной записи
  TAlignedRecord = Record
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

  // Объявление упакованный записи
  TPackedRecord = Packed Record
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

  // Установка выравниваний в Off (выкл.)
  {$A Off}

  // Объявление распакованной записи
  // Она будет обработана как будто упаковка была включена
  TUnPackedRecord = Record
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

var
  alignedRec  : TAlignedRecord;
  packedRec   : TPackedRecord;
  unPackedRec : TUnPackedRecord;

begin
  ShowMessage('Размер выровненной записи = '+IntToStr(SizeOf(alignedRec)));
  ShowMessage('Размер упакованной записи = '+IntToStr(SizeOf(packedRec)));
  ShowMessage('Размер неупакованной записи = '+IntToStr(SizeOf(unPackedRec)));
end;
Размер выровненной записи = 20
Размер упакованной записи = 14
Размер неупакованной записи = 14
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия