定义了以下变量
    tDAYOO_HEAD_tag = Record
      MessageLength     :longword;
      DYVersion         :byte;
      CommandID         :longword;
    end;    tDAYOO_Submit_Resp_body_tag=Record
      result              :byte;
    end;   tDayoo_Submit_tag = Packed Record
    Head              :tDAYOO_HEAD_tag;
    Body              :tDAYOO_Submit_body_tag;
   end;   tDayoo_total_tag = Record
      MessageLength     :longword;
      DYVersion         :byte;
      CommandID         :longword;
      result              :byte;
   end;
但是
SizeOf(tDayoo_total_tag)    //长度:16
SizeOf(tDayoo_Submit_tag)   //长度:13
的两个值不一样,为什么?请大家指津
  

解决方案 »

  1.   

    很显然,packed这个关键字,导致Delphi的编译器都有使用对齐(align),对齐就是当一个变量的长度不足32bit时,编译器在变量后面加上无用的空间,补齐32bit。对齐可以使程序获得更快的速度!
      

  2.   

    明白的原由了,怎么补齐了32BIT,反而长度少了?
      

  3.   

    可能是 我打字打错了。
    packed的话是编译器没有使用对齐。
    而默认的是,编译器是使用对齐