比如,我在程序中有以下几句richedit1.lines.loadFromFile(file1);
deleteFile(file1);那么如果文件比较大时,执行到deleteFile(file1)时,上一步的loadfromfile(file1)还没有释放对文件file1的控制,那么就会出现错误码,提示:文件不能打开。
如何解决问题,确保richedit1.lines.loadfromfile执行完了,并释放了对文件的控制后,再执行deleteFile.

解决方案 »

  1.   

    那么如果文件比较大时,执行到deleteFile(file1)时,上一步的loadfromfile(file1)还没有释放对文件file1的控制,那么就会出现错误码,提示:文件不能打开。
    ---------------------------------------------------------
    LoadFromFile没有执行完不会执行下一条语句的
      

  2.   

    呵呵,已经发生了,我把代码出来,大家帮忙分析一下,
    function TDiff.AnsiDiff(File1,File2:string;stream:TmemoryStream):string;
    const
      DiffStr='/c diff %s %s >>%s';
    var
      sTmp:string;
      //sl:Tstringlist;
    begin
     sl:=Tstringlist.create;
      sTmp:=formatDateTime('mmddhhmmss',now)+inttostr(getTickcount)+inttostr(random(1000))+'.txt';  
      ShellExecute (0,nil,'cmd.exe',pchar(Format(DiffStr,[File1,File2,sTmp])),nil,0);
      //调用diff.exe命令生成对比结果文件
      //sleep(500);//待改进
      richedit1.lines.loadFromFile(sTmp);   
        //sleep(500);//待改进
      deleteFile(pchar(sTmp));
      result:=sTmp;
    end;
    我试了下,问题发生在调用外部命令diff生成文件的过程,即文件可能没
      

  3.   

    楼主应该测试一下
    ShellExecute (0,nil,'cmd.exe',pchar(Format(DiffStr,[File1,File2,sTmp])),nil,0);
     这条语句,应该是这条语句执行的错误 .
    hellolongbin(一个人[.net学习中……]) 
    这位仁兄说得对,LoadFromFile没有执行完不会执行下一条语句的
      

  4.   

    loadFromFile方法执行完成后才执行下面的语句,问题不在这儿,你跟踪一下看看