TRect = packed record
    case Integer of
      0: (Left, Top, Right, Bottom: Longint);
      1: (TopLeft, BottomRight: TPoint);
  end;
看不懂这个定义呀。请大家帮我解释,谢谢大家。

解决方案 »

  1.   

    变体类型。。type
      PPoint = ^TPoint;
      TPoint = record
        x: Longint;//8Bytes
        y: Longint;
      end;
    TRect   =   packed   record 
            case   Integer   of 
                0:   (Left,   Top,   Right,   Bottom:   Longint); //A存储方案
                1:   (TopLeft,   BottomRight:   TPoint);//B存储方案 TRect总共使用的内存字节就是16Bytes;当你这样使用时
      var
        rect:trect;
        
     rect.left:=100;
     rect.top:=100;
     rect.right:=200;
     rect.bottom:=200;
    //这样使用的话,表示你使用A存储方案
     
    var
      p1,p2:tpoint;
     
      p1.x:=100;
      p1.y:=100;
      p2.x:=200;
      p2.y:=200;
      rect.TopLeft:=p1;
      rect.BottomRight:=p2;
    //这样使用的话,表示你使用B存储方案
    不论你使用的哪种方案,你使用的内存大小不会超过16Bytes,编译器会知道你使用哪种方案的。
    其他相关的资料你可以看看帮助。
      

  2.   

    dinglinger 的说法没错,相当于C的联合体。