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

Reply via email to