Размер упакованной записи
У меня есть упакованная запись, мне нужно правильно посчитать её размер, как мне это сделать?
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