使用这些参数(点数组)没有重载方法“旋转”

时间:2011-11-10 17:24:31

标签: .net arrays methods parameters delphi-prism

我有一个名为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;

它引发了一个错误,“没有重载方法'使用这些参数'旋转'。”我检查以确保参数和方法调用是正确的,我认为它们是,但它提出了这个错误。我不明白为什么。

提前致谢,

1 个答案:

答案 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;