Справочник функций и процедур Delphi: $Align

  Навигация по первой букве:

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

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

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

2 {$Align On}

Delphi Sources

Описание
Директива компилятора $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
 


Последние добавленные на сайт исходники

TDictionary Custom Sort

Fast Watermark Sources

3D Designer

Sik Screen Capture

Patch Maker

Айболит (remote control)

 

ListBox Drag & Drop

Доска для игры Реверси

Графические эффекты

Рисование по маске

Перетаскивание изображений

Canvas Drawing

 

Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software (источник – "DelphiBasics")

Группа ВКонтакте