我知道可以用下面的方法,把一维数组直接作为函数参数传递。
但是,当setData的参数类型为二维数组 array of array of sting 时,怎么写?请各位大侠指教。
procedure TForm1.Button1Click(Sender: TObject);
begin
setData(['aaa', 'bbb']);//如果setData的参数是二维数组呢?
end;
procedure TForm1.setData(data: Array of String);
var i: Integer;
begin
for i := 0 to Length(data) - 1 do
begin
ListBox1.Items.Add(data[i]);
end;
end;
但是,当setData的参数类型为二维数组 array of array of sting 时,怎么写?请各位大侠指教。
procedure TForm1.Button1Click(Sender: TObject);
begin
setData(['aaa', 'bbb']);//如果setData的参数是二维数组呢?
end;
procedure TForm1.setData(data: Array of String);
var i: Integer;
begin
for i := 0 to Length(data) - 1 do
begin
ListBox1.Items.Add(data[i]);
end;
end;
var
ta: MyArray;
function MyProc(sa: MyArray): string;
begin
Result := sa[0][0]+sa[0][1]+sa[1][0]+sa[1][1];
end;
begin
SetLength(ta, 2);
SetLength(ta[0], 2);
SetLength(ta[1], 2);
ta[0][0] := 'a';
ta[0][1] := 'b';
ta[1][0] := 'c';
ta[1][1] := 'd';
ShowMessage(MyProc(ta));
end;
var
tArray: MyArray;
begin
SetLength(tArray, 2, 2);
tArray[0][0] := 'aaa';
tArray[0][1] := 'bbb';
tArray[1][0] := 'ccc';
tArray[1][1] := 'ddd';
setData(tArray);//如果setData的参数是二维数组呢?
end;procedure TForm1.setData(data: MyArray);
var
i, j: Integer;
begin
for i := 0 to Length(data) - 1 do
for j := 0 to Length(data) - 1 do
ListBox1.Items.Add(data[i][j]);
end;
我就是觉得为每个元素逐一赋值的办法太罗索了,如果我有几十个元素,我要写即使行代码:
tArray[0][0] := 'aaa';
tArray[0][1] := 'bbb';
tArray[1][0] := 'ccc';
tArray[1][1] := 'ddd';
... //太麻烦了,而且每个行列的数据很不直观。我用了另一个办法,我定义一个string,用分号作为“行”分隔符,用逗号作为“列”分割符,这样我只要写一行代码就可以了,而且每行每列的数据非常直观。
然后再解析这个string。
'第一行, haha, 123; ' +
'第二行, adfadf, 2346; ' +
'第三行, zxcvzxcv, 90889;' +
'呵呵哈哈嘿嘿, tyuty, 12893 ';