在delphi版块的第四个问题,前三个都没人回答,真郁闷。以上哪个问题编译器不能检查出越界,但是运行时系统会报错,难道编译器不检查数组下标么?如果a[10]是能检查出来的,这里是不是有什么机制?我手上书有限,找不到答案。希望有人愿意给我解析下,谢谢。
还是静态分配的数组和动态数组一样?超出范围的索引在编译时都不会报告错误。vari,n:Integer;a:array of Char;beginSetLength(a,10);//n:=10;for i:=Low(a) to High(a) doa[i]:='a';a[11100]:='b';for i:=Low(a) to High(a)+66 doForm1.Memo1.Lines.Add(a[i]);end;
解决了,编译器不做语义检查,以后再也不在这里自言自语了
[此贴子已经被作者于2007-4-2 17:46:08编辑过]