implemention
..
var i:array[1..2] of integer;procedure TForm1.okClick(Sender:TObject)
var a:integer;
begin
 for a:=0 to 255 do
  i[a]:=a;end;
为何数组i不受限制??

解决方案 »

  1.   

    其实它是有错误提示的呀!
    估计是delphi错误处理机制的一个bug吧!
      

  2.   

    因为Delphi自动优化没有执行那条语句,
    如果改成
    for a:=0 to 255 do
    begin
      i[a]:=a;
      showmessage(inttostr(i[a]));
    end;
    就会报错了
      

  3.   

    在代码前加{$R+}
    就会报错了。为了加快代码运行速度,缺省情况下不进行范围校验。这种代码的安全性是你的责任。
    应该使用 for a:=Low(i) to High(i) do
    这样就不会错了。另外,你的代码风格不好。
    一般循环变量使用i,临时数组变量可以使用a.
      

  4.   

    哎...刚才自己犯主观注意错误了,同意windindance(风舞轻扬)
      

  5.   

    for a:=0 to 255 do
      i[a]:=a;
    在没有使用{$R+}的情况下
    也许可以正常运行,
    但是在大型项目中,奇怪的错误很容易由此产生。var i:array[1..2] of integer;
    n:integer;procedure TForm1.okClick(Sender:TObject);
    var a:integer;
    begin
      n := 100;
     for a:=0 to 255 do
      i[a]:=a;
     showmessage(inttostr(n));//现在是几?100吗?不,是3。
    end;
      

  6.   

    看来delphi真不少错误呀
    实际上如果在implementation之前的
    var a:array[1..2] of integer;
        b:string;
    ...
    ..... click(sender...)
    b:='ABCDEFG';
    a[2]:=255;这时b就全部是乱码了.
      

  7.   

    windindance(风舞轻扬)
    对 需要你来控制了
      

  8.   

    这是DELPHI的错误吗?
    当然不是。
    你可以用C试试看。
      

  9.   

    Delphi的代码优化做的很不错了,但是这些人为的错误,只能自己去找,或者你就把编译开关打开。----------------
    过河小卒
      

  10.   

    for a:=Low(i) to High(i) do
      

  11.   

    to: dazzling2003(呼呼猪) 
    自已没有学好就不要乱发言,
    你以为 Borland 的工程师就是白痴?
      

  12.   

    TO:whqcfp(whqcfp) 
    靠!!!!
    我是delphi的大力支持者我什么时候说过borland的工程师是白痴了?!
    我只是不懂问一下子吗什么时候也未有发出反对delphi的声音!
    实际上我认为delphi是难得的一门好语言比vb功能强,比vc容易学
    没弄清楚别人的意思别乱放~~~