$Align — визначає, чи дані будуть вирівняні або запаковані.
Значення
- {$Align Off}
- {$Align On}
Опис
Директива компілятора $Align - визначає, чи вирівнює Delphi дані, чи він упаковує ці дані в найменший простір.
С $Align On (значення за налаштуванням), складні типи даних, такі як записи вирівнюють свої елементи по 2, 4 або 8-байтовій межі, відповідно до типу даних. Наприклад, поле Word було б вирівняне по 4-байтовому кордону.
З $Align On, значення за налаштуванням, Ви можете скасувати цю установку з опцією packed для складних структур даних.
Ці вирівнювання гарантують оптимальну роботу доступу.
$Align Off повідомляє Delphi про ігнорування вирівнювання, і таким чином він упаковує дані.
Приклад коду: Упаковка запису для зменшення пам'яті
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
Примітки
Приклади невпакованих вирівнювань:
Word = 2 байта
LongWord = 4 байта
Single = 4 байта
Double = 8 байтов
$Align еквівалентна $A.
Ця директива може використовуватися в межах вашого коду багато разів.
Значення за налаштуванням - $Align On
Подібні команди
$A - Визначає дані будуть вирівняні або запаковані.
Packed - Ущільнює складні типи даних у мінімальний обсяг пам'яті.