为什么出错(在线等候)?
procedure TForm1.Button1Click(Sender: TObject);
var s:array of byte;
begin
SetLength(s,3);
s[0]:=1; s[1]:=2; s[2]:=3;
showmessage(IntToStr(SizeOf(s))); //为何显示4???
FillChar(s,2,0); //为何出错?
Setlength(s,0);
end;
问题点数:40、回复次数:7Top
1 楼chechy(www.qdocuments.net)回复于 2002-04-12 22:11:33 得分 20
如果想知道动态数组的大小应该这样:
High(s) - Low(s) + 1
FillChar只能用于字符串数组,如果是动态数组,我觉得应该这样:
FillChar(s[0], 2, 0);
动态数组清空请用:
s := nil;Top
2 楼Fuxiao(X老师)回复于 2002-04-12 22:36:49 得分 5
会不会是下标从1开始呢?Top
3 楼chechy(www.qdocuments.net)回复于 2002-04-12 22:37:22 得分 0
应该都是从0开始。Top
4 楼cplusc(5i海洋)回复于 2002-04-12 23:25:32 得分 5
var s:array of byte;
SizeOf(s)--------------s 是 指针
所以 =4
Top
5 楼zhboy(孔方兄)回复于 2002-04-12 23:59:13 得分 5
是从1开始的,这是Delphi的String的一个特点,Top
6 楼zhboy(孔方兄)回复于 2002-04-13 00:01:27 得分 0
sorry,看错了Top
7 楼Alphen(正在学习VC)回复于 2002-04-13 01:40:10 得分 5
没有什么可将了Top




