救救我,申明动态2维数组后怎么赋值和打印? ( 积分: 100 )

  • 主题发起人 主题发起人 dfwzc
  • 开始时间 开始时间
D

dfwzc

Unregistered / Unconfirmed
GUEST, unregistred user!
function TForm1.AllocCharArray2(m, n: integer): CharArray2;
var
new1:CharArray2;
i:integer;
begin
setlength(new1,m);
for i:=low(new1) to High(new1) do
Setlength(new1,n);
Result:=new1;
{两维数组(m.n)可以看作是一个有 m 的元素的一维数组,
这 m 个元素本身又是一个有 n 个元素的数组类型}
end;

type
CharArray2=array of array of char;
type
TCharAryBig = array[0..2,0..3] of char;

var
CA2:CharArray2;
tmp:TCharAryBig;
begin

for x := 0 to 2 do
Begin
for y := 0 to 3 do
begin
tmp[x,y] := '0';
end;
end;

CA2:=AllocCharArray2(2,3);
//以下是把一个已赋值数组再赋值给这个动态的数组
Memo1.Clear;
for x := 0 to 2 do
Begin
for y := 0 to 3 do
begin
CA2[x,y] := CABig[x,y];//很明显 这步错了 应该怎么办?大侠救救偶
end;
end;
//以下是把CA2[x,y]打印出来 大侠帮忙完成
end;
 
你上面的主要错误有两个:
1、在AllocCharArray2函数中
应该是
for i:=low(new1) to High(new1) do
Setlength(new1,n); //注意,这里和你写的不一样
2、使用setlength(new1,m);创建动态数据的时候,是创建了一个m个元素的数组,
但是其数组的索引是从0..m-1,
因此
for x := 0 to 2 do
Begin
for y := 0 to 3 do
begin
CA2[x,y] := CABig[x,y];//很明显 这步错了 应该怎么办?大侠救救偶
end;
end;
是错误的,AllocCharArray2(2,3);创建的是一个第一维是0..1,第二维是0..2的一个数组。
另外,你根本没有定义CABig数组
 
感谢放飞大侠!理解了,谢谢!
 
接受答案了.
 
后退
顶部