Jonas Maebe wrote:
Micha Nelissen wrote:
Because you can't simply compare the memory ranges occupied by
records A and B. They could have different pad bytes (and bits) but
still be the same.
Isn't the number of pad bytes a property of a type ? So when two vars
are of the same type, they also have the same number of pad bytes ?
Yes, but two different variables of the same type could have different
values for those pad bytes. So you have to compare everything but the
pad bytes.
Yes, consider
type myRec = record b: boolean; l: longint end;
Dependent on the alignment (and packing) mode there can be 0, 1 or 3
pad bytes between the two fields.
By the way, in a similar thread about this subject for gpc
(<http://www.gnu-pascal.de/crystal/gpc/en/thread12594.html>) a perl
script was posted
(<http://www.gnu-pascal.de/crystal/gpc/en/mail12604.html>) that
automatically creates comparison operators for record types. I haven't
checked if it works with fpc.
Regards,
Adriaan van Os
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal