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
 



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