waldo kitty schrieb:

How about defining something more pascalish first, a record type for example:

i would agree with this since it is more readable ;)

{$modeswitch autoderef}

type
   PDataHeader = ^TDataHeader;
   TDataHeader = record
     sequence_crc: QWord;
     sequence_key: QWord;
     compr_crc: QWord;
     compr_len: DWord;
   end;

and it looks like here you did see and allow for 64bit on the first three and 32bit on the last one...

When you declare the record properly:

  TDataHeader = record
    sequence_crc_Ptr,
    sequence_key_Ptr,
    compr_crc_Ptr: PInt64;
    compr_len_Ptr: PLongInt;
  end;

then its size depends on the size of an pointer. In 32 bit code the record size will be 16 bytes, in 64 bit code 32 bytes. But since the incoming data array has a fixed alignment, more wizardry is required to match precisely that layout in OPL.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to