我在一个循环中使用setlength(A,3),即每次循环执行一次setlength(A,3)
在第三次循环时,出现了地址访问错误,不知道是为什么,请各位指教

解决方案 »

  1.   

    下面这段代码都没有问题,又如何能说得上是SetLength的问题呢?主要是看看你的A变量是什么类型。某些类型是不可以使用SetLength来分配空间的。
    var
       s:String;
       i:integer;
    begin
       for i:=0 to 40 do
       begin
          SetLength(s,3);
       end;
       Caption:=s;
    end;
      

  2.   

    如果只是setlength(A,3),何必把这句放在循环中呢?
      

  3.   

    不应该是setlength的问题,你应该检查你的代码,一般的问题是多次设定数组的长度后访问超出了数组范围
      

  4.   

    procedure       _SetLength(s: PShortString; newLength: Byte);
    begin
      Byte(s^[0]) := newLength;   // should also fill new space
    end;