就象普通类型参数一样声明就是了,只是在函数参数声明中,只支持一维动态数组(也可用作开放类型参数)的直接声明,其它静态数组或多维动态数组需要单独声明为一种类型后再作为参数类型声明;函数返回值也是一样。下面是二维动态数组的操作实例:Type TArr=array of array of string;Function DoArray(const c:Tarr):Tarr; var i,j:Integer; d:Tarr; Begin SetLength(d,high(c)+1,high(c[0])+1); for i:=Low(c) to high(c) do for j:=Low(c[0]) to high(c[0]) do Begin showmessage(c[i,j]); d[i,j]:='Copy'+c[i,j]; end; Result:=d; end;procedure TForm1.FormCreate(Sender: TObject); var a,b:Tarr; i,j:Integer; begin Setlength(a,3,3); for i:=Low(a) to high(a) do for j:=Low(a[0]) to high(a[0]) do a[i,j]:=inttostr(i)+','+inttostr(j); b:=doArray(a); for i:=Low(b) to high(b) do for j:=Low(b[0]) to high(b[0]) do showmessage(b[i,j]);end;
使用指针的方法,不过只适于过态数组: Type DynArr=array of array of String;Function DoArray(A:PString):PString; var i,j:Integer; Begin For i:=Low(DynArr(A)) to High(DynArr(A)) Do For j:=Low(DynArr(A)[0]) to High(DynArr(A)[0]) Do DynArr(A)[i,j]:=Inttostr(i)+','+Inttostr(j)+':INFUN'; Result:=A; End;procedure TForm1.FormCreate(Sender: TObject); var A:DynArr; i,j:Integer; begin SetLength(A,3,3); For i:=Low(A) to High(A) Do For j:=Low(A[0]) to High(A[0]) Do DynArr(A)[i,j]:=Inttostr(i)+','+Inttostr(j); A:=DynArr(DoArray(PString(A))); For i:=Low(A) to High(A) Do For j:=Low(A[0]) to High(A[0]) Do ShowMessage(A[i,j]); end;
TArr=array of array of string;Function DoArray(const c:Tarr):Tarr;
var
i,j:Integer;
d:Tarr;
Begin
SetLength(d,high(c)+1,high(c[0])+1);
for i:=Low(c) to high(c) do
for j:=Low(c[0]) to high(c[0]) do
Begin
showmessage(c[i,j]);
d[i,j]:='Copy'+c[i,j];
end; Result:=d;
end;procedure TForm1.FormCreate(Sender: TObject);
var
a,b:Tarr;
i,j:Integer;
begin
Setlength(a,3,3); for i:=Low(a) to high(a) do
for j:=Low(a[0]) to high(a[0]) do
a[i,j]:=inttostr(i)+','+inttostr(j);
b:=doArray(a); for i:=Low(b) to high(b) do
for j:=Low(b[0]) to high(b[0]) do
showmessage(b[i,j]);end;
Type
DynArr=array of array of String;Function DoArray(A:PString):PString;
var
i,j:Integer;
Begin
For i:=Low(DynArr(A)) to High(DynArr(A)) Do
For j:=Low(DynArr(A)[0]) to High(DynArr(A)[0]) Do
DynArr(A)[i,j]:=Inttostr(i)+','+Inttostr(j)+':INFUN';
Result:=A;
End;procedure TForm1.FormCreate(Sender: TObject);
var
A:DynArr;
i,j:Integer;
begin
SetLength(A,3,3); For i:=Low(A) to High(A) Do
For j:=Low(A[0]) to High(A[0]) Do
DynArr(A)[i,j]:=Inttostr(i)+','+Inttostr(j); A:=DynArr(DoArray(PString(A))); For i:=Low(A) to High(A) Do
For j:=Low(A[0]) to High(A[0]) Do
ShowMessage(A[i,j]);
end;