// 폴더 전체 삭제(하위폴더 포함)
procedure ClearFolder(sPath: String);
var
sr: TSearchRec;
ir: Integer;
sFilter, sName: String;
begin
// 드라이브 루트 또는 윈도우, 시스템 폴더 삭제 불가
if Pos(':', sPath)=0 then Exit;
sPath:= IncludeTrailingBackslash(sPath);
if not DirectoryExists(sPath) then Exit;
if Length(sPath) < 4 then Exit;
sFilter:= sPath + '*.*';
ir:= FindFirst(sFilter, faAnyFile, sr);
while ir = 0 do begin
Application.ProcessMessages;
if (sr.Name <> '.') and (sr.Name <> '..') then begin
sName:= sPath + sr.Name;
if (sr.Attr and faDirectory) > 0 then begin
ClearFolder(sName);
SetFileAttributes(PChar(sName), FILE_ATTRIBUTE_NORMAL);
RemoveDir(sName);
end
else begin
SetFileAttributes(PChar(sName), FILE_ATTRIBUTE_NORMAL);
DeleteFile(sName);
end;
end;
ir:= FindNext(sr);
end;
FindClose(sr);
end;
// 윈도우 임시폴더 삭제
procedure DelTempFolder;
var
Buffer: array[0..1023] of Char;
sTempFolder: String;
begin
// 일반적으로 C:\WINDOWS\TEMP\
GetTempPath(SizeOf(Buffer)-1, Buffer);
sTempFolder:= StrPas(Buffer);
if DirectoryExists(sTempFolder) then ClearFolder(sTempFolder);
end;
* uses절에 FileCtrl 유닛을 포함해야 하며 DelTempFolder()를 호출하면 됩니다.
// 폴더 전체 삭제(하위폴더 포함)
procedure ClearFolder(sPath: String);
var
sr: TSearchRec;
ir: Integer;
sFilter, sName: String;
begin
// 드라이브 루트 또는 윈도우, 시스템 폴더 삭제 불가
if Pos(':', sPath)=0 then Exit;
sPath:= IncludeTrailingBackslash(sPath);
if not DirectoryExists(sPath) then Exit;
if Length(sPath) < 4 then Exit;
sFilter:= sPath + '*.*';
ir:= FindFirst(sFilter, faAnyFile, sr);
while ir = 0 do begin
Application.ProcessMessages;
if (sr.Name <> '.') and (sr.Name <> '..') then begin
sName:= sPath + sr.Name;
if (sr.Attr and faDirectory) > 0 then begin
ClearFolder(sName);
SetFileAttributes(PChar(sName), FILE_ATTRIBUTE_NORMAL);
RemoveDir(sName);
end
else begin
SetFileAttributes(PChar(sName), FILE_ATTRIBUTE_NORMAL);
DeleteFile(sName);
end;
end;
ir:= FindNext(sr);
end;
FindClose(sr);
end;
// 윈도우 임시폴더 삭제
procedure DelTempFolder;
var
Buffer: array[0..1023] of Char;
sTempFolder: String;
begin
// 일반적으로 C:\WINDOWS\TEMP\
GetTempPath(SizeOf(Buffer)-1, Buffer);
sTempFolder:= StrPas(Buffer);
if DirectoryExists(sTempFolder) then ClearFolder(sTempFolder);
end;
* uses절에 FileCtrl 유닛을 포함해야 하며 DelTempFolder()를 호출하면 됩니다.