Страница 1 из 1

Дамп объекта record

СообщениеДобавлено: 27.08.2020 15:49:10
DYUMON
Доброго всем времени суток.
Ранее с подобным не сталкивался, но вот пришлось залезть в дебри.
Допустим есть такой объект
Код: Выделить всё
type
  TLength = array [0..1] of byte;
  TAuthenticatorMask = array  [0..15] of byte;
  TAttributesList = array [0..4075] of byte;

  TRadiusPacket = record
    rCode: byte;
    rIdentifier: byte;
    rLength: TLength;
    rAuthenticator: TAuthenticatorMask;
    rAttributes: TAttributesList;
  end;


Можно ли как то его сдампить , что бы посмотреть что в нем внутри лежит?

Re: Дамп объекта record

СообщениеДобавлено: 27.08.2020 18:17:48
iskander
Сдампить - это значит распечатать в удобочитаемой форме?

Re: Дамп объекта record

СообщениеДобавлено: 27.08.2020 18:24:39
DYUMON
Да не обязательно, просто хотя бы строку получить вида 000102A11C

Re: Дамп объекта record

СообщениеДобавлено: 27.08.2020 19:11:06
iskander
По простому можно так:
Код: Выделить всё
...
uses
   ..., StrUtils, ...

function HexDump(const aBuffer; aBufSize: Integer): string;
begin
  SetLength(Result, aBufSize * 2);
  BinToHex(PChar(@aBuffer), PChar(Result), aBufSize);
end;
...
var
  p: TRadiusPacket;
...
WriteLn('p: ', HexDump(p, SizeOf(p)));

Но если запись не упакована, то придётся самому вычислять, где кончается одно поле и начинается другое.

Re: Дамп объекта record

СообщениеДобавлено: 28.08.2020 06:03:15
DYUMON
Благодарю, такой вариант вполне подошел.