Нет перегруженного метода «Поворот» с этими параметрами (массив точек) - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть метод с именем 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 Ответ

1 голос
/ 10 ноября 2011

Эта ошибка вызвана тем, что тип array of Point является массивом Unbound, а array[1..2] of Point является массивом Bound, поэтому вы передаете различные типы, чтобы решить проблему, объявив переменную 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;
...