在循环体未结束之前,不能确定Arr数组的长度,那么给数组里的元素赋值就出现错误了。如果笼统地预先定义10000的长度,而实际结果却只是十来个元素或者只有二三个的长度,那岂不是浪费内存存储空间??很是想不明白,各位指点一下迷津.var i:Integer;
   Arr:array of Integer;//动态数组steLength(Arr,10000)//有必要搞这么大吗???? for i:=0 to N do
  begin
     if N/2=0 then  Arr[i]:=i;         
    
  end;  

解决方案 »

  1.   

    可以在for循环中 steLength(Arr,i)
      

  2.   

    类似TStringList的Add方式。在赋值之前,给你的Arr长度+1
      

  3.   

    哦~ 最近忙晕了... 之前也不怎么接触Pascal,生疏了看来平时没事的时候,多看看代码、动手.
    应该是这样:var i,n:integer;
    ArrList:array of Integer;
      n:=0;
      for i:=1 to 10 do
          begin
           if .... then
              begin
                setLength(ArrList,n+1);//将数组的长度加1
                ArrList[n]:=i;
                n:=n+1;
              end;
          end;