用ShellAPI函数,不知道为什么,总是会出现 无法删除源文件:无法读取源文件或磁盘 的错误,但我手动去删又没问题, function TForm1.DeleteDir(const Handle: THandle; const str: string): Boolean;
var
f: TSHFileOpStruct;
begin
if DirectoryExists(str) then
begin
FillChar(f, SizeOf(f), 0);
f.Wnd := Handle;
f.wFunc := FO_DELETE;
f.pFrom := PAnsiChar(str);
f.fFlags := FOF_NOCONFIRMATION;
if SHFileOperation(f) = 0 then
Result:= true
else
Result:= False;
end else
Result := False;
end;
各位大侠知道哪出问题的话请指点一下小弟,另外求用递归法删除文件夹的方法
删除当前文件夹下的文件我会,删除目录可以RemoveDir,怎么说呢,应该算是算法方面的问题了,弄的我头疼哪位大侠帮帮忙吧,小弟拜谢了
var
f: TSHFileOpStruct;
begin
if DirectoryExists(str) then
begin
FillChar(f, SizeOf(f), 0);
f.Wnd := Handle;
f.wFunc := FO_DELETE;
f.pFrom := PAnsiChar(str);
f.fFlags := FOF_NOCONFIRMATION;
if SHFileOperation(f) = 0 then
Result:= true
else
Result:= False;
end else
Result := False;
end;
各位大侠知道哪出问题的话请指点一下小弟,另外求用递归法删除文件夹的方法
删除当前文件夹下的文件我会,删除目录可以RemoveDir,怎么说呢,应该算是算法方面的问题了,弄的我头疼哪位大侠帮帮忙吧,小弟拜谢了
var
sr: TSearchRec;
begin
if DirectoryExists(path) then
begin
ChDir(path);
if FindFirst('*.*',faAnyFile,sr)=0 then
begin
repeat
if ((sr.Attr and faDirectory)=16) and (sr.Name<>'.') and (sr.Name<>'..') then
begin
if DeleteTree(sr.Name) then
memo1.Lines.Add('删除目录 '+sr.Name)
else
memo1.Lines.Add('删除失败 '+sr.Name);
end else
if ((sr.Attr and faDirectory)<>16) and (sr.Name<>'.') and (sr.Name<>'..') then
begin
SysUtils.FileSetAttr(sr.Name, 0);
if DeleteFile(sr.Name) then
memo1.Lines.Add('删除文件 '+GetCurrentDir+'\'+sr.Name)
else
memo1.Lines.Add('删除失败 '+GetCurrentDir+'\'+sr.Name);
end;
Application.ProcessMessages;
until FindNext(sr)<>0;
FindClose(sr);
end;
ChDir('..');
Result := RemoveDir(path);
end else
Result := False;
end;