Delphi xe2 (RAD studio xe2/delphi16) Beta trial (3)

Source: Internet
Author: User
Tags class operator

The reord type seems to have changed to an object. You can also write a function. Even if you are a god, look at the trect in system. types. PAS:

  TRect = record  private    function GetWidth: Integer;    procedure SetWidth(const Value: Integer);    function GetHeight: Integer;    procedure SetHeight(const Value: Integer);    function GetSize: TSize;    procedure SetSize(const Value: TSize);    function GetLocation: TPoint;  public    constructor Create(const Origin: TPoint); overload;                              // empty rect at given origin    constructor Create(const Origin: TPoint; Width, Height: Integer); overload;      // at TPoint of origin with width and height    constructor Create(const Left, Top, Right, Bottom: Integer); overload;         // at x, y with width and height    constructor Create(const P1, P2: TPoint; Normalize: Boolean = False); overload;  // with corners specified by p1 and p2    constructor Create(const R: TRect; Normalize: Boolean = False); overload;    // operator overloads    class operator Equal(const Lhs, Rhs: TRect): Boolean;    class operator NotEqual(const Lhs, Rhs: TRect): Boolean;    // union of two rectangles    class operator Add(const Lhs, Rhs: TRect): TRect;    // intersection of two rectangles    class operator Multiply(const Lhs, Rhs: TRect): TRect;    class function Empty: TRect; inline; static;    //utility methods    //makes sure TopLeft is above and to the left of BottomRight    procedure NormalizeRect;    //returns true if left = right or top = bottom    function IsEmpty: Boolean;    //returns true if the point is inside the rect    function Contains(const Pt: TPoint): Boolean; overload;    // returns true if the rect encloses R completely    function Contains(const R: TRect): Boolean; overload;    // returns true if any part of the rect covers R    function IntersectsWith(const R: TRect): Boolean;    // computes an intersection of R1 and R2    class function Intersect(const R1: TRect; const R2: TRect): TRect; overload; static;    // replaces current rectangle with its intersection with R    procedure Intersect(const R: TRect); overload;    // computes a union of R1 and R2    class function Union(const R1: TRect; const R2: TRect): TRect; overload; static;    // replaces current rectangle with its union with R    procedure Union(const R: TRect); overload;    // creates a minimal rectangle that contains all points from array Points    class function Union(const Points: Array of TPoint): TRect; overload; static;    // offsets the rectangle origin relative to current position    procedure Offset(const DX, DY: Integer); overload;    procedure Offset(const Point: TPoint); overload;    // sets new origin    procedure SetLocation(const X, Y: Integer); overload;    procedure SetLocation(const Point: TPoint); overload;    // inflate by DX and DY    procedure Inflate(const DX, DY: Integer); overload;    // inflate in all directions    procedure Inflate(const DL, DT, DR, DB: Integer); overload;    //returns the center point of the rectangle;    function CenterPoint: TPoint;    function SplitRect(SplitType: TSplitRectType; Size: Integer): TRect; overload;    function SplitRect(SplitType: TSplitRectType; Percent: Double): TRect; overload;    // changing the width is always relative to Left;    property Width: Integer read GetWidth write SetWidth;    // changing the Height is always relative to Top    property Height: Integer read GetHeight write SetHeight;    property Size: TSize read GetSize write SetSize;    property Location: TPoint read GetLocation write SetLocation;  case Integer of    0: (Left, Top, Right, Bottom: Longint);    1: (TopLeft, BottomRight: TPoint);  end;

Access to a record, for example:

P: Ppoint;

X: integer;

It turns out that X: = p. x; yes, X: = P ^. X; or (not suitable for Pascal's rigorous style. But there are some changes elsewhere:

Ppointerlist = ^ tpointerlist;
Tpointerlist = array of pointer;

VaR
Asortlist: ppointerlist;

P, T: pointer;

P: = asortlist [1]; // This cannot be written. It must be changed to P: = asortlist ^ [1];

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.