一个小问题

liu9527 2005-04-19 02:34:29
比如,我在程序中有以下几句

richedit1.lines.loadFromFile(file1);
deleteFile(file1);

那么如果文件比较大时,执行到deleteFile(file1)时,上一步的loadfromfile(file1)还没有释放对文件file1的控制,那么就会出现错误码,提示:文件不能打开。
如何解决问题,确保richedit1.lines.loadfromfile执行完了,并释放了对文件的控制后,再执行deleteFile.
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu9527 2005-08-18
  • 打赏
  • 举报
回复
结贴
Heyongfeng 2005-04-20
  • 打赏
  • 举报
回复
loadFromFile方法执行完成后才执行下面的语句,问题不在这儿,你跟踪一下看看
liu9527 2005-04-20
  • 打赏
  • 举报
回复
up 一下
liu9527 2005-04-20
  • 打赏
  • 举报
回复
先回贴的大致浏览一遍,再回,问题已找到,但没有找到解决方法
liu9527 2005-04-19
  • 打赏
  • 举报
回复
这句语句执行起来没有错,目的是调用外部程序生成一个文件,如果生成的这个文件比较大时,则出错,我怀疑原因是生成的文件没有来得及释放,后面又要访问造成的.可如何解决
pengxuan 2005-04-19
  • 打赏
  • 举报
回复
楼主应该测试一下
ShellExecute (0,nil,'cmd.exe',pchar(Format(DiffStr,[File1,File2,sTmp])),nil,0);
这条语句,应该是这条语句执行的错误 .
hellolongbin(一个人[.net学习中……])
这位仁兄说得对,LoadFromFile没有执行完不会执行下一条语句的
liu9527 2005-04-19
  • 打赏
  • 举报
回复
呵呵,已经发生了,我把代码出来,大家帮忙分析一下,
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生成文件的过程,即文件可能没
hellolongbin 2005-04-19
  • 打赏
  • 举报
回复
那么如果文件比较大时,执行到deleteFile(file1)时,上一步的loadfromfile(file1)还没有释放对文件file1的控制,那么就会出现错误码,提示:文件不能打开。
---------------------------------------------------------
LoadFromFile没有执行完不会执行下一条语句的
jinjazz 2005-04-19
  • 打赏
  • 举报
回复
你所担心的问题不会发生的

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧