Каким образом можно узнать размерность запакованной записи

Рейтинг: 0Ответов: 1Опубликовано: 15.06.2023

Имеется следующая структура, написанная на делфи, каким образом я могу узнать её размерность не используя непосредственно сам делфи? Размерность нужна для передачи данных через 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;

Ответы

▲ 0Принят

Нашёл компилятор, получил размерность через 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.