比如,我在程序中有以下几句richedit1.lines.loadFromFile(file1);
deleteFile(file1);那么如果文件比较大时,执行到deleteFile(file1)时,上一步的loadfromfile(file1)还没有释放对文件file1的控制,那么就会出现错误码,提示:文件不能打开。
如何解决问题,确保richedit1.lines.loadfromfile执行完了,并释放了对文件的控制后,再执行deleteFile.
deleteFile(file1);那么如果文件比较大时,执行到deleteFile(file1)时,上一步的loadfromfile(file1)还没有释放对文件file1的控制,那么就会出现错误码,提示:文件不能打开。
如何解决问题,确保richedit1.lines.loadfromfile执行完了,并释放了对文件的控制后,再执行deleteFile.
---------------------------------------------------------
LoadFromFile没有执行完不会执行下一条语句的
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生成文件的过程,即文件可能没
ShellExecute (0,nil,'cmd.exe',pchar(Format(DiffStr,[File1,File2,sTmp])),nil,0);
这条语句,应该是这条语句执行的错误 .
hellolongbin(一个人[.net学习中……])
这位仁兄说得对,LoadFromFile没有执行完不会执行下一条语句的