Большой Воронежский Форум
» Программирование>Чем отличается packed record ???
Krasa 17:39 31.03.2008
Уважаемые, может кто подскажет что за тип такой packed record в дельфях и чем он отличается от обычного recordа??? Когда есть смысл его использовать? [Ответ]
p51x 18:01 31.03.2008
По-моему, уже давно в дельфи все record'ы - packed record
Про packed есть в справке. [Ответ]
DWanek 20:55 31.03.2008

Сообщение от p51x:
Про packed есть в справке.

Зачем вот так писать? В справке есть всё, вопрос не про справку задавали. Если уж не знаешь лучше промолчать, а не говорить "Почитай Help" или "В нете покопайся".

Теперь по теме:

По умолчанию хранение данных в Дельфи выровнено либо по слову (Word) либо по двойному слову (DWord) для того чтобы доступ к данным был более быстрым. Т.е. задав такую структуру:

Type
MyStruct = record
One: Byte;
Two: Byte;
End;

можно ожидать, что ее размер составит 2 байта, но на самом деле, в связи с выравниванием, размер записи будет составлять два Word. При добавлении зарезервированного слова packed размер типа будет именно столько, сколько задан, однако время доступа к данным при этом увеличится.

Вообще для увеличения скорости выполнения кода лучше вообще не пользоваться типами: Byte, Smallint, если не критично использование памяти. А лучше переменные объявлять 4 байтами, например Integer, DWord. [Ответ]
Pengvin 21:22 31.03.2008
от себя кину 5 копеек. удобно использовать packed record когда работаешь с устройствами или форматами файлов. Т.е. если какую либо важную структуру прочитаешь в то что предлагает дельфи по умолчанию неизвестно какая ахинея там окажется, а вот в packed получишь данные такими какие они есть, точнее скзать получиш, то что по идее должно быть в структуре, как в спецификации написано, на самом деле оно может быть совершенно по другому . [Ответ]
Krasa 19:23 02.04.2008
DWanek и Pengvin спасибо за объяснения, теперь все понятно :-) [Ответ]
sm337 17:49 09.04.2008
В принципе все то же с картинками неплохо описано у Вирта.
Полистайте - классическая книжка. [Ответ]
Вверх