Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2010, 14:42   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Подмигивание В чём различие записей Record от Packed Record?

Всем привет! В названии темы сам вопрос. К примеру в чём будет разница между такими записями:
Код:
Type
Y = Packed Record
T: Integer;
S: String;
End;
//---//
Type
Y = Record
T: Integer;
S: String;
End;
И в каких случаях можно применять Packed Record?
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 08.06.2010, 14:49   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

>>> тырк


RSDN...
Цитата:
Ключевое слово Packed говорит Delphi минимизировать память, взятую определенным объектом.

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

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

Упаковка отменяет это, сжимая данные в наименьшую память, хотя с последующим уменьшенным доступом выполнения.
Код:
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
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 08.06.2010 в 14:52.
raxp вне форума Ответить с цитированием
Старый 08.06.2010, 14:52   #3
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Теперь понятно. Спасибо!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 08.06.2010, 15:03   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Вроде как packed есть рекомендация. Кажись, компилятор хоть и стремится, но не обязан ей следовать.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.06.2010, 15:12   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,033
По умолчанию

Насколько я понял это выравнивание данных или нет?.
Levsha100 вне форума Ответить с цитированием
Старый 08.06.2010, 15:16   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да, packed это отключения выравнивания.
просто record выравнивается
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.06.2010, 16:57   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

А ведь packed record вроде как есть и в Turbo Pascal?
_-Re@l-_ вне форума Ответить с цитированием
Старый 08.06.2010, 17:14   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
А ведь packed record вроде как есть и в Turbo Pascal?
Не вроде как а есть. Она еще в трешке появилась.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Record / Packed Record Alex Cones Общие вопросы Delphi 7 11.11.2009 10:43
my Record subsonic Общие вопросы Delphi 5 09.02.2009 15:20
В чём различие printf и cout? kobolok Общие вопросы C/C++ 3 20.11.2008 22:38
Вопрос по поводу записей (Record) werser Помощь студентам 13 05.09.2007 23:11