if same size is necessary, I would do it like this:
const
topDataQword= 29;
topNameChar= 231;
type
Tfnord1 = array[0..topDataQword] of qword ;
Tfnord2 = record
name: array[0..topNameChar] of char;
inode: qword
end ;
Tfnord= record
case boolean of
false: (data: Tfnord1);
true: (ni : Tfnord2)
end;
and, in the code:
if sizeof(tfnord1) <> sizeof(tfnord2) then halt(4711);
or, in the data
type xxxxxxtest = array [ 1..ord(sizeof(tfnord1) = sizeof(tfnord2)) ] of
boolean ;
----- Original Message -----
From: "Mark Morgan Lloyd" <markmll.fpc-pas...@telemetry.co.uk>
To: <fpc-pascal@lists.freepascal.org>
Sent: Sunday, August 07, 2016 6:11 PM
Subject: [fpc-pascal] Variant record consistency
Given a declaration
const
topDataQword= 29;
topNameChar= 231;
type
Tfnord= record
case boolean of
false: (data: array[0..topDataQword] of qword);
true: (name: array[0..topNameChar] of char;
inode: qword) (* For recovery if name is changed
*)
end;
is it possible to enforce a rule that the two record variants must be the
same size?
--
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/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal