var
str:array of string;
i:Integer;
j:Integer;
begin
SetLength(str,1);
for i:=0 to 4 do
begin
j:=Length(Str);
SetLength(str,Length(str)+1);
Str[Length(Str)]:='xxxx';
end;
ShowMessage(str[0]);
ShowMessage(str[1]);
ShowMessage(str[2]);
ShowMessage(str[3]);
end;
几个奇怪的地方,调试发现,i的值在第一次循环居然是5,第2次是4,第3次是3. 不是应该从0-4的吗???还有,为什么j:=Length(Str);为什么一直告诉我是随机数?调试发现str里面的元素个数确实是在递增呀!得到数组的长度怎么搞?Length也不行,SizeOf也不行?搞了几天,发现Delphi太不适合我用了,怎么都这么奇怪的,和观念很冲突
high(Str)得到数组上标
low(Str)得到数组下标就可以得到数组元素的数量了,不知道你说的数组的长度是不是这个??
最下方居然有个 never used??????Fuck
thanks
gyk120
i是从0开始的,可以试一下下面的代码.
var
str:array of string;
i:Integer;
j:Integer;
begin
SetLength(str,1);
for i:=0 to 4 do
begin
ShowMessage(IntToStr(i));
j:=Length(Str);
SetLength(str,Length(str)+1);
Str[Length(Str)]:='xxxx';
end;
ShowMessage(str[0]);
ShowMessage(str[1]);
ShowMessage(str[2]);
ShowMessage(str[3]);
end;
Str[Length(Str)]:='xxxx';
该是
Str[Length(Str) - 1]:='xxxx';
或
Str[high(Str) - 1]:='xxxx';