返回扩展数组

时间:2014-06-16 21:48:04

标签: delphi delphi-xe

我试图返回一个Delphi的VCL扩展数组。代码如下: -

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;

它显示RadioGroup3的错误为&#39;未声明的标识符&#39;或者&#39;缺少参数类型&#39;虽然我在整个代码中使用过它。我无法理解错误。请看看!

2 个答案:

答案 0 :(得分:6)

一般来说,我已经了解到你永远不会想要使用这个构造的数组...&#34;在参数列表或函数返回类型中。

首先声明这样的事情:

type
  TExtArray = array of extended;
  TRealArray = array of real;

然后使用这些代替&#34;扩展&#34;数组;和&#34;真实的数组&#34;。

您还需要在动态数组上调用SetLength,包括Result。

正如其他人所说,&#34; RadioGroup3.ItemIndex&#34;无论是否正确输入,都不能用作函数中的参数。只需传入一个整数值。

答案 1 :(得分:2)

大卫的回答基本上是正确的,但我应该指出,如果这是Delphi XE,你应该将其声明为TArray<extended>。这可以在未来保存各种兼容性问题。