如果是Packed,或者是加了编译开关{$A1 +}设置为1字节对其的记录,内部的成员都是连续的.
否则不保证一定是连续的.默认为4字节边界对其.
比如默认情况下
Type
PB = ^TB;
TB = record
I:Byte;
J:Integer
end;
var
B : TB;
begin
ShowMessage(IntToStr(Integer(@B.J) - Integer(@B.I)));
end;
显示的就是4.说明成员I,J之间有3个字节的空洞.
如果要连续的话要
TB = packed record
I:Byte;
J:Integer
end;
或加上{$A1 +}的编译开关