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
Packed
Ключевое слово
Уплотняет сложные типы данных в минимальный объём памяти unit
  
type Name = Packed array[...] of ...;
type Name = Packed class ... end;
type Name = Packed object ... end;
type Name = Packed record ... end;
Описание
Ключевое слово Packed говорит Delphi минимизировать память, взятую определенным объектом.

Обычно, сложные типы данных, такие как записи, имеют свои элементы по 2, 4 или 8 байта, соответствующие типам данных. Например, поле Word было бы 4-байтовое.

Записи также дополняются, для гарантии, что они закончены, 4-х байтовой границей.

Упаковка отменяет это, сжимая данные в наименьшую память, хотя с последующим уменьшенным доступом выполнения.
Примечания
Примеры распакованных данных:

Word     = 2 bytes
LongWord = 4 bytes
Single   = 4 bytes
Double   = 8 bytes
Похожие команды
$Align  Определяет данные будут выровнены или запакованы

Array  Тип данных содержащий индексируемую коллекцию данных

Class  Начинает объявление типа объектного класса

Object  Позволяет данным типа подпрограмм обращаться к методу объекта

Record  Структурный тип данных содержащий поля данных

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

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

var
  defaultRec : TDefaultRecord;
  packedRec  : TPackedRecord;

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



© Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки  |     |  Английская версия