var i: integer; a: array of integer; begin for i :=1 to 10 do begin setlength(a,i); a[i]:=i; end; for i:= 1 to 10 do begin showmessage(inttostr(a[i])); end; 你运行一下,看是什么值全是0
改为: var i: integer; a: array of integer; begin for i :=1 to 10 do begin setlength(a,i); a[i-1]:=i;//第i个元素的下标是i-1! end; for i:= 1 to 10 do begin showmessage(inttostr(a[i])); end;
刚才没改完,下面的显示语句也要改: for i:= 0 to 9 do begin showmessage(inttostr(a[i])); end;
i: integer;
a: array of integer;
begin for i :=1 to 10 do
begin
setlength(a,i);
a[i]:=i;
end; for i:= 1 to 10 do
begin
showmessage(inttostr(a[i]));
end;
你运行一下,看是什么值全是0
另外,动态数组分配内存时有时候确实会有数据丢失的问题,
好象可以换一个叫realloc的函数来解决问题(TList就是一个极好的例子)
var
i: integer;
a: array of integer;
begin for i :=1 to 10 do
begin
setlength(a,i);
a[i-1]:=i;//第i个元素的下标是i-1!
end; for i:= 1 to 10 do
begin
showmessage(inttostr(a[i]));
end;
begin
showmessage(inttostr(a[i]));
end;