进行主程序后,再没有调用以下这个删除整个目录之前,用AssignFile是没有正常的.//删除目录 isError为出错时是否提示出错信息,为真时提示,否则退出过程不提示 create by xsw
procedure deletedir(Mpath:string; IsError:boolean);
var
vSearchRec: TSearchRec;
K: Integer;
begin
try
K := FindFirst(Mpath+'\*.*', faAnyFile, vSearchRec);
while K = 0 do
begin
if (vSearchRec.Attr and faDirectory > 0) and (Pos(vSearchRec.Name, '..') = 0) then
begin
deletedir(mPath + '\' + vSearchRec.Name, IsError);
rmdir(pchar(mPath + '\' + vSearchRec.Name));//删除目录
end else if Pos(vSearchRec.Name, '..') = 0 then
begin
FileSetAttr(pchar(vSearchRec.Name),0); //取消文件为普通属性
DeleteFile(Mpath + '\'+vSearchRec.Name); //删除文件
end;
K := FindNext(vSearchRec);
end; FindClose(vSearchRec);
//Rmdir(Mpath); //删除目录 (加入这名后总会引起reset(F:fileName)函数出现错误)
except
on E:exception do
if IsError then
messagebox(application.handle,pchar('不好意思了,出错了!'+#13#10
+'出错原因:'+E.Message+#13#10#10
+'如有必要,请联络程序供应商!'),'温馨提示', mb_iconError);
end;
end;
但调用之后,再用AssignFile(Filename:String)就出错了,出错原因好像是Filename不是一个合法的文件,但跟踪时文件名是正确的,文件也存在,为什么会出错呢?
procedure deletedir(Mpath:string; IsError:boolean);
var
vSearchRec: TSearchRec;
K: Integer;
begin
try
K := FindFirst(Mpath+'\*.*', faAnyFile, vSearchRec);
while K = 0 do
begin
if (vSearchRec.Attr and faDirectory > 0) and (Pos(vSearchRec.Name, '..') = 0) then
begin
deletedir(mPath + '\' + vSearchRec.Name, IsError);
rmdir(pchar(mPath + '\' + vSearchRec.Name));//删除目录
end else if Pos(vSearchRec.Name, '..') = 0 then
begin
FileSetAttr(pchar(vSearchRec.Name),0); //取消文件为普通属性
DeleteFile(Mpath + '\'+vSearchRec.Name); //删除文件
end;
K := FindNext(vSearchRec);
end; FindClose(vSearchRec);
//Rmdir(Mpath); //删除目录 (加入这名后总会引起reset(F:fileName)函数出现错误)
except
on E:exception do
if IsError then
messagebox(application.handle,pchar('不好意思了,出错了!'+#13#10
+'出错原因:'+E.Message+#13#10#10
+'如有必要,请联络程序供应商!'),'温馨提示', mb_iconError);
end;
end;
但调用之后,再用AssignFile(Filename:String)就出错了,出错原因好像是Filename不是一个合法的文件,但跟踪时文件名是正确的,文件也存在,为什么会出错呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货