我试图返回一个扩展的VCL形式的Delphi数组.代码如下: -
function Calc_Er(
n: Integer;
RadioGroup3.ItemIndex : Boolean;
K1, K2 : Extended;
factor1, factor2, p, hh, ten, r : Array of Real;
Pa: extended ) : Array of Extended;
begin
if RadioGroup3.ItemIndex = 0 then
begin
if hh[n] < factor1[n] then
begin
Er[n] := K2 * (K1 + p[n]);
end
else if (hh[n] < factor2[n]) and (hh[n] > factor1[n]) then
begin
Er_stack := K2 * (K1 + p[n]);
Er[n] := (h / 100 + hh[n]) / ((h / 100 / Er_stack[n]) + hh[n] * (ten[n] * h / r[n] + Pa) / Sqr(p + ten[n] * h / r[n] + Pa));
end
else
begin
Er[n] := Sqr(p[n] + Pa + ten[n] * h / r[n]) / (ten[n] * h / r + Pa);
end;
end
else
begin
Er[n] := K2 * (K1 + p[n]);
end;
end;
Run Code Online (Sandbox Code Playgroud)
它将RadioGroup3的错误显示为"未声明的标识符"或"缺少参数类型",尽管我已在整个代码中使用它.我无法理解错误.请看一看!
一般来说,我已经知道你永远不想在参数列表或函数的返回类型中使用构造"array of ...".
首先声明这样的东西:
type
TExtArray = array of extended;
TRealArray = array of real;
Run Code Online (Sandbox Code Playgroud)
然后使用这些代替"扩展数组"和"实数数组".
您还需要在动态数组上调用SetLength,包括Result.
正如其他人所提到的,"RadioGroup3.ItemIndex"不能用作函数中的参数,无论它是否正确输入.只需传入一个整数值.