当使用动态数组作为过程参数时,我得到错误'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出现了同样的错误,但我看不出建议的解决方案是如何应用于此问题的。
答案 0 :(得分:4)
问题很明显:
dst := reduce_array (src, dst, dst_len);
reduce_array
是程序,而不是功能。因此它不返回任何东西。特别是,它不会返回arrDouble
(dst
的类型)。
因此,您尝试将过程分配给类型arrDouble
的变量,就像编译器试图告诉您的那样。