> -- Иван Денисов писал(а):
> Спасибо, Александр. Кажется я понял, почему  20 байт, это не потому что она упакована, а потому что она не выровнена. Она не выровнена, но и не упакована.  это не антоним к Запись может быть выровнена, но не упакована. Получается, что автоматической упаковки как таковой нет в ББ в принципе? Или в ББ упаковка такая, что по условию не нарушает порядок переменных? Надо самому рассчитывать порядок объявления переменных и соответствие их групп машинному слову, чтобы получить оптимальную производительность при выравнивании?
Для производительности "упаковывать" нужно по машинному слову, а для экономии места в памяти - в точности как описан тип в записи без выравнивания под размер машинного слова. Бывает выравнивание и на меньшие размеры ячеек, как правило, кратные 2. Подробнее в Википедии:Выравнивание данных

МодификаторPACKEDимеет тот же смысл, что иnoalign- инструкция компилятору не выравнивать по ячейкам машинного слова.
http://www.delphibasics.co.uk/RTL.asp?Name=Packed(Delphi)
Если я правильно понимаю, с выравниванием под машинное слово компилятор сможет лучше оптимизировать код под низлежащую архитектуру для более быстрого доступа к ячейкам структуры записи.