我有一个名为Rotate的方法,我从另一个方法调用它,如下所示:
按定义旋转方法:
method TMakerGraphic.Rotate(var pts:array of Point; pcnt,xc,yc:integer);
从另一种方法调用它,如下所示:
method TMakerLine.GetDynamicBounds(var r:Rectangle);
var
pts:array[1..2] of Point;
midx,midy:integer;
begin
with bounds do
begin
pts[1].x := left;
pts[1].y := top;
pts[2].x := right;
pts[2].y := bottom;
if Active then
begin
r := bounds;
with r do
begin
midx := ((right - left) div 2) + left;
midy := ((bottom - top) div 2) + top;
end;
Rotate(var pts,2,midx,midy); <<<<============= Here is where it raises the error
end;
end;
end;
它引发了一个错误,“没有重载方法'使用这些参数'旋转'。”我检查以确保参数和方法调用是正确的,我认为它们是,但它提出了这个错误。我不明白为什么。
提前致谢,
答案 0 :(得分:1)
此错误是因为array of Point
类型是未绑定数组而array[1..2] of Point
是绑定数组,因此您传递不同类型,以解决问题,将pts
变量声明为array of Point
,然后使用New
,您可以设置数组的大小。
检查此样本
var
pts:array of Point;
midx,midy:integer;
begin
with bounds do
begin
pts:= New Point[2];
pts[0].x := left;
pts[0].y := top;
pts[1].x := right;
pts[1].y := bottom;