我定义了一个动态数组,想在运行时增加它的长度,而前面的数据不需要重新赋值,应该怎样办var
a : array of ingeger;
i : integer;
begin
setlength(a,5);
for i := 0 to 4 do
a[i] := i;
//现在要将数组的长度设为10
setlength(a,10);
for i := 5 to 9 do
a[i] := i;
end;
这样做前面的5个被初始化成了0,如果这样做不对应该怎样做呢
a : array of ingeger;
i : integer;
begin
setlength(a,5);
for i := 0 to 4 do
a[i] := i;
//现在要将数组的长度设为10
setlength(a,10);
for i := 5 to 9 do
a[i] := i;
end;
这样做前面的5个被初始化成了0,如果这样做不对应该怎样做呢
a:array of byte;
begin
setlength(a,5);//a(0,0,0,0,0)
fillchar(a[0],5,#51);//--a(51,51,51,51,51)
setlength(a,10);//---a(51,51,51,51,51,0,0,0,0,0)
fillchar(a[0],10,#52);//---a(52,52,52,52,52,52,52,52,52,52)
showmessage(inttostr(a[0]));
end;
从上面可知,动态数组在增加长度时,前面的数据是不会改变的。不是你想的:前面的会清0!
所以不用担心,你前面的数据仍然正确存在。