扩展

type
  TPoint = class
  public
    X, Y: Double;
  end;

  TPointHelper = class helper for TPoint
  private
    function GetItem(I: Integer): Double;
  public
    //indexer added by the helper
    property Items[I: Integer]: Double
      read GetItem; default;
  end;

function TPointHelper.GetItem(
  I: Integer): Double;
begin
  if I = 0 then
    Result := X
  else
    Result := Y;
end;

var
  P: TPoint;
begin
  P := TPoint.Create;
  P.X := 1;
  P.Y := 2;

  WriteLn('p[0] is ', P[0]:0:0);
  //p[0] is 1
  WriteLn('p[1] is ', P[1]:0:0);
  //p[1] is 2
end.