大家帮忙看看这段代码,编译时老是说address violate ....
ff:textfile;
fname:string;
textarray:array of string;
ss:string;procedure openf();
begin
 assignfile(ff,fname);
 readln(ff,ss);
 setlength(textarray,2);
 textarray[0]:='first thing';
 textarray[1]:='second thing';
 form1.memo1.text:=ss+textarray[0]+textarray[1];
 closefile(ff);
end;在form1.creat中写道:
   begin
       fname:='1.txt';
       memo1.text:=textarray[0];
end;在btton1的onclick中写道:
begin
  opendlg.excecute;
  fname:=extractfilename(opendlg.filename);
 openf;
end; 
 
 通过openf过程两次改变了textfile数组的大小,但是总是报错,为什么?

解决方案 »

  1.   

    不是数据的问题吧
    在readln前加上
     reset(ff);
      

  2.   

    对不起,我忘记了,reset(ff)是在readln前面有的,我在这里漏写了。
    也就是说,有reset(ff)照样出错。
      

  3.   

    搞没搞错,create中使用了textarray[0],而此时你还没有调用openf()函数对textarray进行初始化。
      

  4.   

    memo1.text:=textarray[0];
    这前面是不是又漏了一句?
    setlength(textarray,1);
      

  5.   

    不好意思,仓促之间难免出错,现在改正一下,应该与我的程序的那段差不多了
    请大家来找bug,谢谢!
    ff:textfile;
    fname:string;
    textarray:array of string;
    ss:string;procedure openf();
    begin
     assignfile(ff,fname);
     reset(ff); 
     readln(ff,ss);
     setlength(textarray,2);
     textarray[0]:='first thing';
     textarray[1]:='second thing';
     form1.memo1.text:=ss+textarray[0]+textarray[1];
     closefile(ff);
    end;在form1.creat中写道:
       begin
           fname:='1.txt';
           openf;
    end;
      

  6.   

    textarray:array of string; 改为
    textarray:array of variant;
      

  7.   

    不会吧,编译真的没问题,我回去试试。
    还有rwdx(任我独行)说的我也回去一试!