可能重复:
Pass a multidimensional array as a parameter in Delphi
大家好, 同问这里: Pass a multidimensional array as a parameter in Delphi
但需要另一个答案。
type
MultiArray = array of array of Integer;
procedure Foo(a : MultiArray);
begin
end;
procedure Bar(a : array of Integer);
var i : Integer;
begin
for i in a do WriteLn(IntToStr(i));
end;
const
a : array[0..2] of Integer = (1, 2, 3);
ma : array[0..1] of array[0..1] of Integer = ((1,2),(3,4));
begin
Bar(a);
Bar([1,2,3]);
//Foo(ma);
end.
我想将不同大小的数组传递给Foo。如果不可能这样,任何“变通办法”?
答案 0 :(得分:2)
我不知道你想做什么。你写了
我想传递不同的数组 大小到Foo。
那么,你为什么不那样做呢?
如果
type
TMultiArray = array of array of integer;
和
procedure Foo(a: TMultiArray);
然后你可以做
var
ShortMultiArray, LongMultiArray, HugeMultiArray: TMultiArray;
begin
SetLength(ShortMultiArray, 10, 10);
SetLength(LongMultiArray, 100, 100);
SetLength(HugeMultiArray, 1000, 1000);
Foo(ShortMultiArray);
Foo(LongMultiArray);
Foo(HugeMultiArray);
end;
答案 1 :(得分:2)
我猜这个问题是关于多维开放数组的。
Delphi中没有多维打开数组。但是您可以使用动态数组作为元素创建一维开放数组。这是一个例子:
type
TIntArray = array of Integer;
procedure Test(arr: array of TIntArray);
begin
ShowMessage(IntToStr(arr[1,1]));
end;
procedure TForm9.Button5Click(Sender: TObject);
begin
Test([TIntArray.Create(1,2), TIntArray.Create(2,3)]);
end;