关于网友提出的“ 关于数组的问题?”问题疑问,本网通过在网上对“ 关于数组的问题?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 关于数组的问题?描述:
我想实现将两个一维数组合并成一个二维数组,我写了下面的东西:
function matrixtwo(a,b:array of real):array of real//a,b是两个一维数组
var c:variant;
m,i:integer;
begin
m:=max(length(a),length(b));
c:=vararraycreate([1,2,1,m],variant);
for i:=1 to m do c[1,i]:=a;//关键是这个地方是不是错了啊
for i:=1 to m do c[2,i]:=b;
return:=c;//还有这里返回一个实型数组可以么?
end
解决方案1:
type
TAA = array of array of real; //最好定义这个,或者用variant类型来返回值
procedure matrixtwo(a,b: array of real; var c: TAA);
var
i, j: integer;
begin
SetLength(c, 2);
SetLength(c[0], Length(a));
j := 0;
for i := low(a) to high(a) do //for i := 1 to m do是错误的,看下面的调用例子你就知道了
begin
c[0][j] := a[i];
j := j + 1;
end;
SetLength(c[1], Length(b));
j := 0;
for i := low(b) to high(b) do
begin
c[1][j] := a[i];
j := j + 1;
end;
end;
调用例子:
procedure TForm1.Button1Click(Sender: TObject);
var
c: TAA;
a: array[1..4] of real;
b: array[2..4] of real;
begin
a[1] := 1; a[2] := 2; a[3] := 3; a[4] := 4;
b[2] := 2; b[3] := 3; b[4] := 4;
matrixtwo(a, b, c);
showmessage(floattostr(c[0][0]));
end;