Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Integer как SmallInt

Delphi , Синтаксис , Типы и Переменные

Integer как SmallInt

Автор: Steve Schafer

Я перешел на Delphi 2.0 и у меня появилась проблема с типизированными файлами. У меня есть множество типизированных файлов с различными записями. Теперь, когда целое занимает 4 байта, определения всех моих записей должны быть изменены с расчетом на то, что вместо целого типа придется использовать тип SmallInts. Тем не менее, даже после такого изменения размер моих записей остается прежним...

Вам необходимо использовать модификатор "packed":


type
  TMyRecType = packed record
    ...
  end;

Преимущества работы с кодом наследия и необычностями Delphi!

Вы правы, что ключевое слово packed является важным в этом случае для обеспечения того, чтобы размер вашего записи оставался неизменным при изменении типов.

Вот разбивка происходящего:

  1. В Delphi записи хранятся на стеке как блоки памяти, которые занимают континуальный отрезок.
  2. Ключевое слово packed обеспечивает то, что компилятор оптимизирует расположение записи для использования минимального количества памяти, необходимого для хранения ее полей.
  3. Без packed, расположение записи может быть заполнено дополнительными байтами для выравнивания полей на 4-разрядном границе, что увеличить размер записи.

Используя packed, вы говорите Delphi, чтобы упаковать запись плотно без дополнительных байт, что должно привести к тому же памятному footprint, как и ранее.

Вот обновленная версия вашего кода:

type
  TMyRecType = packed record
     // ... поля ...
  end;

Это должно обеспечить то, чтобы ваши записи продолжали занимать тот же объем памяти, что и при использовании типа Integer.

Статья рассказывает о способе решения проблемы с типизированными файлами в Delphi, когда целое занимает 4 байта, и описывает необходимость использования модификатора "packed" для корректного определения записей.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Типы и Переменные ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:50:14
2024-05-19 17:54:17/0.010006904602051/2