大家帮忙看看我的这段代码:if FindFirst('d:\delphitest\gif\' + '*.*', faAnyFile, SR) = 0 then begin if not (sr.Attr = faDirectory) then begin try AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name); Reset(fi); //处理........... finally closefile(fi); end; try MoveFile(PChar('d:\delphitest\gif\'+Sr.Name), PChar('d:\delphitest\2\'+Sr.Name)); except end; end; while FindNext(sr) = 0 do begin if not (sr.Attr = faDirectory) then begin form1.Memo1.Lines.Add(Sr.Name); try AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name); Reset(fi); //处理....... finally closefile(fi); end; try MoveFile(PChar('d:\delphitest\gif\'+Sr.Name), PChar('d:\delphitest\2\'+Sr.Name)); except end; end; end; FindClose(sr); end;
to flyinwuhan: 我知道是要独占方式打开啊,但是我不知道用AssignFile读文本文件怎么指定独占方式呀,不要笑我哦上面那段代码我都有回异常处理了,不过运行时还是会弹出错误框另外,还有一个问题,就是我要删除这个文件的时候如果删除不了的话,就会造成一个文件处理了两次啊,这样不行各位大侠出招
fm := TFileStream.Create( fmOpenReadWrite or mShareExclusive );
然后加异常处理,打不开就算了,嗬嗬。
比如程序A关闭一个文件时,程序B刚好遍历到这个文件,接着打开这个文件,而程序A此时却要删除这个文件
begin
if not (sr.Attr = faDirectory) then
begin
try
AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name);
Reset(fi);
//处理...........
finally
closefile(fi);
end; try
MoveFile(PChar('d:\delphitest\gif\'+Sr.Name), PChar('d:\delphitest\2\'+Sr.Name));
except
end;
end; while FindNext(sr) = 0 do
begin
if not (sr.Attr = faDirectory) then
begin
form1.Memo1.Lines.Add(Sr.Name);
try
AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name);
Reset(fi);
//处理.......
finally
closefile(fi);
end;
try
MoveFile(PChar('d:\delphitest\gif\'+Sr.Name), PChar('d:\delphitest\2\'+Sr.Name));
except
end;
end;
end;
FindClose(sr);
end;
AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name);
Reset(fi);
//处理...........
finally
closefile(fi);
end;
改为如下这样呢?
try
AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name);
Reset(fi);
//处理...........
except
closefile(fi);
end;
我知道是要独占方式打开啊,但是我不知道用AssignFile读文本文件怎么指定独占方式呀,不要笑我哦上面那段代码我都有回异常处理了,不过运行时还是会弹出错误框另外,还有一个问题,就是我要删除这个文件的时候如果删除不了的话,就会造成一个文件处理了两次啊,这样不行各位大侠出招
改成except的话,如果没有产生异常,是不是没有把文件关闭了
应该加上try
AssignFile(fi, 'd:\delphitest\gif\'+Sr.Name);
Reset(fi);
//处理...........
except
closefile(fi);
end;
closefile(fi);
谢谢啊,我用TFileStream.Create以独方式打开还是会出错,奇怪try都没用了?to softwaiter:
听不懂你说的话啊
如果跟踪调试的话可能就不一定会出现冲突的情况了还有没有哪位大侠帮帮出出主意呀
比如程序A关闭一个文件时,程序B刚好遍历到这个文件,接着打开这个文件,而程序A此时却要删除这个文件
}
1。你的流程有问题,明显是多线程的同步嘛? 2。程序A--线程A吧?