我需要扩展类型类型TPolygon = TPointF数组;通过addpoint和deletepoint函数
我正在考虑类助手函数的解决方案,但这种方法对于类型是不可行的。我没有明确的想法如何开始这项任务。
/// concept for add points to polygon
procedure TPolygon.AddPoint(x, y: Integer);
var
i: Integer;
begin
i := length(???);
setlength(???, i + 1);
self[i].x := x;
self[i].y := y;
end;
/// concept forremove points from polygon
procedure TPolygon.DeletePoint(x, y: Integer);
var
i: Integer;
begin
i := length(???);
setlength(???, i - 1);
// remove entry [i]
// renumber the other points ....
end;
答案 0 :(得分:2)
您可以使用数组类型的记录帮助程序:
type
TPolygonHelper = record helper for TPolygon
procedure Add(const X, Y: Single);
end;
procedure TPolygonHelper.Add(const X, Y: Single);
var
N: Integer;
begin
N := Length(Self);
SetLength(Self, N+1);
Self[N].X := X;
Self[N].Y := Y;
end;
请注意,这需要Delphi XE3扩展记录助手。