//============================================================================== //删除目录(包括子目录一起删除)************************************************ //============================================================================== procedure EraseDir(DirName:string); var DirInfo: TSearchRec; DosError: Integer; begin DosError := FindFirst(DirName+'\*.*', FaAnyfile, DirInfo); while DosError=0 do begin if ((DirInfo.Attr and FaDirectory)=faDirectory) and (DirInfo.Name<>'.') and (DirInfo.Name<>'..') then EraseDir(DirName + '\' + DirInfo.Name); {$IF DEFINED(WIN32) AND DECLARED(UsingVCL)} if ((DirInfo.Attr and FaDirectory)<>FaDirectory) and ((DirInfo.Attr and FaVolumeID)<>FaVolumeID) {$ELSE} if ((DirInfo.Attr and FaDirectory)<>FaDirectory) {$IFEND} then DeleteFile(pChar(DirName + '\' + DirInfo.Name)); DosError := FindNext(DirInfo); end; SysUtils.FindClose(DirInfo); RemoveDirectory(PChar(DirName)); end;
//删除目录(包括子目录一起删除)************************************************
//==============================================================================
procedure EraseDir(DirName:string);
var DirInfo: TSearchRec;
DosError: Integer;
begin
DosError := FindFirst(DirName+'\*.*', FaAnyfile, DirInfo);
while DosError=0 do
begin
if ((DirInfo.Attr and FaDirectory)=faDirectory) and (DirInfo.Name<>'.') and (DirInfo.Name<>'..')
then EraseDir(DirName + '\' + DirInfo.Name);
{$IF DEFINED(WIN32) AND DECLARED(UsingVCL)}
if ((DirInfo.Attr and FaDirectory)<>FaDirectory) and ((DirInfo.Attr and FaVolumeID)<>FaVolumeID)
{$ELSE}
if ((DirInfo.Attr and FaDirectory)<>FaDirectory)
{$IFEND}
then DeleteFile(pChar(DirName + '\' + DirInfo.Name));
DosError := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
RemoveDirectory(PChar(DirName));
end;
SHFileOpStruct 结构中,pFrom设为要删除的文件夹名,
pTo设为nil,wFunc设为FO_DELETE;uses Shellapi;