动态数组作为参数产生错误'不兼容的类型'

时间:2013-12-17 19:50:59

标签: arrays delphi delphi-xe5

当使用动态数组作为过程参数时,我得到错误'E2010不兼容类型:'arrDouble'和'过程,无类型指针或无类型参数'。我使用的代码是:

  arrDouble = array of double;

  procedure reduce_array (var src: arrDouble; var dst: arrDouble; dst_len: Int32);
  begin ... end;

  procedure enlarge_array (var src: arrDouble; var dst: arrDouble; dst_len: Int32);
  begin ... end;

  procedure procrust_array (var src: arrDouble; var dst: arrDouble; dst_len: Int32);
  var
     temp: arrDouble;
     i: Int32;
     n: Int32;
  begin
     n := Length (src);
     if n = dst_len then
     begin
        SetLength (dst, n);
        for i := 0 to n - 1 do dst [i] := src [i];
     end else if n > dst_len then
     begin
        dst := reduce_array (src, dst, dst_len);
     end else
     begin
        temp := enlarge_array (src, temp, dst_len);
        dst  := reduce_array  (temp, dst, dst_len);
     end;
  end; // procrust_array //

我在调用enlarge_array和reduce_array时遇到此错误。 var并不是绝对必要的,但是我尝试过的测试之一(使用var没有任何区别)。我发现report出现了同样的错误,但我看不出建议的解决方案是如何应用于此问题的。

1 个答案:

答案 0 :(得分:4)

问题很明显:

dst := reduce_array (src, dst, dst_len);

reduce_array程序,而不是功能。因此它不返回任何东西。特别是,它不会返回arrDoubledst的类型)。

因此,您尝试将过程分配给类型arrDouble的变量,就像编译器试图告诉您的那样。