Jonas Maebe wrote:
On 09 Mar 2012, at 22:26, Mark Morgan Lloyd wrote:

Thanks Jonas, I don't think I need to do it but I thought it was a fair 
question: better safe than sorry.

OK, so hopefully I can get away with another. I'm looking at a program written 
in Delphi, which reads a file containing the image of an IBM mainframe tape. 
This has a record:

Type TAWSHeader=Record
      ThisSize: Word;
..

If you want a record to have a predictable layout, always either
a) use {$packrecords c} if it's a translation of a C struct, or
b) declare it as "packed"

In other cases, you can (and will) have problems across different platforms or 
even compiler versions.

Thanks Jonas, noted (although I invariably put lots of Assert(SizeOf()=) in initialization). It's actually pretty simple stuff, but derives from a card IBM designed which had a mainframe (big-endian) processor on it but plugged into an MCA (little-endian) system.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to