关于数组的问题?

来源:互联网  时间:2016/8/21 18:04:10

关于网友提出的“ 关于数组的问题?”问题疑问,本网通过在网上对“ 关于数组的问题?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于数组的问题?
描述:

我想实现将两个一维数组合并成一个二维数组,我写了下面的东西:
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;

上一篇新人问问题哈!不要笑我!
下一篇AdoQuery+DBGridEh,其中AdoQuery是动态设置的,该如何在DBGridEh设置lookup字段呢?
明星图片
相关文章
《 关于数组的问题?》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)