try
   TTest = Packed record
     data10 : Smallint; 
data11 : Smallint; 
data12 : Smallint; 
data13 : Smallint; 
data14 : Smallint; 
data21 : array[1..3] of char; 
data22 : array[1..3] of char; 
data23 : array[1..3] of char; 
data3 : single; 
data4 : longint; 
end; 

解决方案 »

  1.   

    SizeOf确实是Record的实际大小。因为Delphi采用了对齐技术,所以Record的实际大小比你计算的要大一些。
    如果要等于你的计算数值,可以修改声明:
    TTest = packed record 
    data10 : Smallint; 
    data11 : Smallint; 
    data12 : Smallint; 
    data13 : Smallint; 
    data14 : Smallint; 
    data21 : array[1..3] of char; 
    data22 : array[1..3] of char; 
    data23 : array[1..3] of char; 
    data3 : single; 
    data4 : longint; 
    end;