Размер упакованной записи

У меня есть упакованная запись, мне нужно правильно посчитать её размер, как мне это сделать?

  type
  {информация о карте для применения на кассе}
  TCardUseInfo = packed record
    Size       : Word;    // Size of TCardUseInfo - заполнить перед вызовом
    Account    : Integer; // номер счёта
    Holder     : Array[0..40] of Char; // ФИО
    Active     : BOOL;    // карта активна?
    WithMngr   : BOOL;    // применять с подтверждением менеджера?
    Expired    : BOOL;    // истёк срок действия?
    Locked     : BOOL;    // карта заблокирована?
    Seize      : BOOL;    // карту изъять?
    WhyLocked  : Array[0..255] of Char; // причина блокировки - asciiz
    Unpay      : Integer; // тип неплательщика
    Discount   : Word;    // номер скидки
    Bonus      : Word;    // номер бонуса
    CanPay     : Comp;    // сколько можно снять сейчас денег с карты
    DiscLimit  : Comp;    // предел суммы скидки
    Sum1       : Comp;    // остаток на счёте
    Sum2       : Comp;    // остаток на счёте 2 (для Farcards)
    Sum3       : Comp;    // остаток на счёте 3 (для Farcards)
    Sum4       : Comp;    // остаток на счёте 4 (для Farcards)
    Sum5       : Comp;    // остаток на счёте 5 (для Farcards)
  end;

Получаю не верный размер, поэтому не выходит написать структуру на JNA.

UPD. это скорее всего старая версия Delphi.


Ответы (1 шт):

Автор решения: MBo

Чтобы получить ответ, нужно выполнить

sz := sizeof(TCardUseInfo);

Если вручную -

3*2 +    2*4 + 7*8 +  5*4 +  41*2 +  256*2
 word    int   comp   bool   char     char
→ Ссылка