Разместите нашу кнопку!

Новые статьи:

Programming articles

Создание сайтов на шаблонах

Множество вариантов работы с графикой на канве

Шифруем файл с помощью другого файла

Перехват API функций - Основы

Как сделать действительно хороший сайт

Создание почтового клиента в Delphi 7

Применение паскаля для решения геометрических задач

Управление windows с помощью Delphi

Создание wap сайта

Операционная система unix, термины и понятия

SQL враг или друг

Возникновение и первая редакция ОС UNIX

Оптимизация проекта в Delphi

Ресурсы, зачем нужны ресурсы

Термины программистов 20 века

Советы по созданию собственного сайта с нуля

Шифруем файл с помощью пароля

Фракталы - геометрия природы

Crypt - Delphi программа для шифрования

Рассылка, зачем она нужна и как ее организовать?

Учебник по C++ для начинающих программистов

Уроки для изучения ассемблера

Загадочный тип PCHAR

Средства по созданию сайтов

Операторы преобразования классов is и as

Borland Developer studio 2006. Всё в одном

Создание базы данных в Delphi, без сторонних БД


Software engineering articles



$A

Определяет, были ли данные выровнены или упакованы

  1. {$A-}
  2. {$A+}

Описание:

    Директива компилятора $A определяет, выравнивает ли Delphi данные, или пакует их в наименьший объем.

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

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

     Выравнивание обеспечивает оптимальную скорость доступа.

     $A- указывает Delphi игнорировать выравнивание, и таким образом пакует данные.

Пример кода:

type
   // Use the default setting : $A+
   // Declare an unpacked, aligned record
   TAlignedRecord = Record
     name1 : string[4];
     floater : single;
     name2 : char;
     int : Integer;
   end;

   // Declare a packed record
   TPackedRecord = Packed Record
     name1 : string[4];
     floater : single;
     name2 : char;
     int : Integer;
   end;

   // Set alignment off
   {$A-}

   // Declare an unpacked record
   // This will get treated as if packed was on
   TUnPackedRecord = Record
     name1 : string[4];
     floater : single;
     name2 : char;
     int : Integer;
   end;

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

begin
   ShowMessage('Aligned record size = '+IntToStr(SizeOf(alignedRec)));
   ShowMessage('Packed record size = '+IntToStr(SizeOf(packedRec)));
   ShowMessage('UnPacked record size = '+IntToStr(SizeOf(unPackedRec)));
end;

Результат выполнения:

Aligned record size = 20
Packed record size = 14
UnPacked record size = 14