如何将可变长度数组常量作为参数传递?



我有许多二维数组常量,长度为一维变量,如下所示:

const
ThiamineRDA: array[0..2, 0..3] of Double =
((0, 0, 0.05, 0.2), (0, 0.06, 0.11, 0.3), (0, 1, 3, 0.5));
RiboflavinRDA: array[0..1, 0..3] of Double =
((0, 0, 0.05, 0.2), (0, 0.06, 0.11, 0.3));

我想将此常量作为参数传递给过程:

LoadIntakes(Item, ThiamineRDA);

但是我如何定义该过程以允许该参数?

procedure LoadIntakes(Item:PNutrientInfo; IntakesList: array of... ???? );
begin
//.....
end;

不能传递二维开放的开放数组。但是,如果其中一个维度的大小是固定的,则可以这样做,如下所示:

(我省略了您的第一个参数,以便我可以检查它是否可以编译(

type
TQArray = array[0..3] of double;
const
ThiamineRDA: array[0..2] of TQArray =
((0, 0, 0.05, 0.2), (0, 0.06, 0.11, 0.3), (0, 1, 3, 0.5));
RiboflavinRDA: array[0..1] of TQArray =
((0, 0, 0.05, 0.2), (0, 0.06, 0.11, 0.3));
procedure LoadIntakes( IntakesList: array of TQArray );
begin
//.....
end;
procedure Test;
begin
LoadIntakes( ThiamineRDA );
end;

如果您希望将多维开放数组作为参数传递给某个过程,则首先需要为此类数组定义特殊类型。然后,您甚至可以定义该类型的常量数组。

所以你的代码看起来像这样:

type
ThiamineRDA = array[0..2, 0..3] of Double;
RiboflavinRDA = array[0..1, 0..3] of Double;
...
const
ArThiamineRDA: ThiamineRDA =
((0, 0, 0.05, 0.2), (0, 0.06, 0.11, 0.3), (0, 1, 3, 0.5));
ArRiboflavinRDA: RiboflavinRDA =
((0, 0, 0.05, 0.2), (0, 0.06, 0.11, 0.3));
...
LoadIntakes(Item, ArThiamineRDA);

最新更新