★★★关于二维动态数组的一个问题,不知道是怎么回事?我给100分。谢谢
//创建一个三角形矩阵
procedure TForm1.Button1Click(Sender: TObject);
var
a:array of array of string; //二维动态数组
i,j:integer;
tempstr:string;
begin
listbox1.Clear;
setlength(a,10);
for i:=low(a) to high(a) do
begin
tempstr:='k';
setlength(a[i],i); //第一次循环时i在这里为0
for j:=low(a[i]) to high(a[i]) do
begin
a[i,j]:=inttostr(j+1); {第一次循环时i在这里却不为0了(我不知道它现在为何值了,总之不为0)。i在外层循环进入这层循环时也没有变化呀!怪了!!谁能解释一下,谢谢了!}
tempstr:=tempstr+a[i,j];
end;
listbox1.Items.Add(tempstr);
end;
end;还有就是动态数组的下界是不是都是从0开始?上面的i和j是不是都是从0开始?我的电邮是:[email protected] MSN是:[email protected]
//创建一个三角形矩阵
procedure TForm1.Button1Click(Sender: TObject);
var
a:array of array of string; //二维动态数组
i,j:integer;
tempstr:string;
begin
listbox1.Clear;
setlength(a,10);
for i:=low(a) to high(a) do
begin
tempstr:='k';
setlength(a[i],i); //第一次循环时i在这里为0
for j:=low(a[i]) to high(a[i]) do
begin
a[i,j]:=inttostr(j+1); {第一次循环时i在这里却不为0了(我不知道它现在为何值了,总之不为0)。i在外层循环进入这层循环时也没有变化呀!怪了!!谁能解释一下,谢谢了!}
tempstr:=tempstr+a[i,j];
end;
listbox1.Items.Add(tempstr);
end;
end;还有就是动态数组的下界是不是都是从0开始?上面的i和j是不是都是从0开始?我的电邮是:[email protected] MSN是:[email protected]
你第一次根本就没有进入循环啊!
第二个for循环
第一次为:for 0 to -1
第二次为:for 1 to 1
k
k1
k12
k123
k1234
k12345
k123456
k1234567
k12345678
k123456789
是结果吧!
var
a:array of array of string; //二维动态数组
i,j:integer;
tempstr:string;
begin
listbox1.Clear;
setlength(a,10);
for i:=low(a) to high(a) do
begin
showmessage(inttostr(i));
tempstr:='k';
setlength(a[i],i); //第一次循环时i在这里为0
showmessage(inttostr(i));
for j:=low(a[i]) to high(a[i]) do
begin
showmessage(inttostr(i));
a[i,j]:=inttostr(j+1); {第一次循环时i在这里却不为0了(我不知道它现在为何值了,总之不为0)。i在外层循环进入这层循环时也没有变化呀!怪了!!谁能解释一下,谢谢了!}
tempstr:=tempstr+a[i,j];
end;
listbox1.Items.Add(tempstr);
end;
end;我加了点语句,发现它变成了1了,我也不知道为什么,呵呵
k
k1
k12
k123
k1234
k12345
k123456
k1234567
k12345678
k123456789
当i等于1 的时候才进去内层的循环。
u:integer
for i:=1 to 20 do
u:=i;
for j:=1 to 30 do
u:=j;
只要对循环变量赋一下值,就会一切正常了