Каким образом можно узнать размерность запакованной записи
Имеется следующая структура, написанная на делфи, каким образом я могу узнать её размерность не используя непосредственно сам делфи? Размерность нужна для передачи данных через JNA
Может есть какие-то онлайн компиляторы для проверки размерности?
type
TTransactionInfo = packed record
Size : Word; // Size of TTransactionInfo - заполнить перед вызовом
Kind : Word; // 0-оплата 1-скидка 2-бонус 3-потраты гостя
Summa : Comp; // сумма в копейках
RestCode : Word; // код ресторана
LogDate : Integer; // дата чека (0 -> 30/12/1899)
UnitNum : Byte; // номер кассы
CheckNo : Integer; // номер чека
Comment : Array[0..255] of Char; //комментарий - для ручных транзакций
end;
Ответы (1 шт):
Автор решения: ordinal
→ Ссылка
Нашёл компилятор, получил размерность через sizeOf(), ниже приведу пример кода.
UPD >
Добавление директивы {$MODE DELPHI} исправляет ситуацию с Integer. А ещё есть директива {$MODE DELPHIUNICODE} - это если код из Delphi2009 и новее, где Char уже 2 байта, а не 1. Спасибо zed за добавление информации к ответу!
program getSize;
type
TTransactionInfo = packed record
Size : Word; // Size of TTransactionInfo - заполнить перед вызовом
Kind : Word; // 0-оплата 1-скидка 2-бонус 3-потраты гостя
Summa : Comp; // сумма в копейках
RestCode : Word; // код ресторана
LogDate : Integer; // дата чека (0 -> 30/12/1899)
UnitNum : Byte; // номер кассы
CheckNo : Integer; // номер чека
Comment : Array[0..255] of Char; //комментарий - для ручных транзакций
end;
begin
writeln(sizeOf(TTransactionInfo));
end.