我声明了一个动态数组
myarray:array of string;
关于动态数组部分的操作是这样的:
for i:=0 to (n-1) do begin
start:=1;
c:=i;
f:=p[i].parent;
while(f<>0) do begin
if(p[f].lchild=c)then
    begin
      myarray[i][start]:='0';
      start:=start+1;
    end;
if(p[f].rchild=c)then
   begin
      myarray[i][start]:='1';
      start:=start+1;
   end;
c:=f;
f:=p[c].parent;
end;
end;
但是通过编译,运行时候却出错,不知道是为什么?

解决方案 »

  1.   

    在用动态数组前,要用SetLength()过程为数组分配内存
      

  2.   

    要用SetLength()为数组分配内存。还有,要注意动态数组的下标都是从0开始的。
      

  3.   

    你的数组和数组成员都没有初始化。SetLength(myarray, 100);
    SetLength(myarray[i], 100);
      

  4.   

    来晚了, 同意 楼上所有邻居
    特别提醒注意: aiirii(ari-爱的眼睛) ,  rbtliu(lys)
      

  5.   

    设了长度以后,如果想改变长度,可以用copy函数,具体用法看帮助
      

  6.   

    设了长度后,如果想改变长度,再调用SetLength
      

  7.   

    再SetLength的时候,其中原有的数据都被保留.(当然,长度被设的比原来小的时候,后面的元素就丢失了)
      

  8.   

    我也来晚了,动态数组必须用SetLength过程分配内存的
      

  9.   

    对呀,先进行内存的分配呀!利用setlength函数就可以了!
      

  10.   

    要用SetLength()为数组分配内存。还有,要注意动态数组的下标都是从0开始的
      

  11.   

    SetLength(myarray,1,100);
    SetLength(myarray,2,100);
    多维数组