< サンプル1 >
{$WARN SYMBOL_PLATFORM OFF}
procedure DeleteFolders(FolderName:string);
var
SearchRec: TSearchRec;
fname: string;
rc, ww: Integer;
begin
//パス名が区切り記号で終わる様にする
FolderName := IncludeTrailingPathDelimiter(FolderName);
rc := FindFirst( FolderName+'*.*',faAnyFile,SearchRec );
while rc=0 do begin
if (SearchRec.Attr and faDirectory)>0 then begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
DeleteFolders( FolderName+SearchRec.Name );
end
else begin
fname := FolderName+SearchRec.Name;
FileSetAttr( fname,faArchive ); {File属性変更}
DeleteFile( fname );
end;
rc := FindNext( SearchRec );
end;
FindClose( SearchRec );
RemoveDir( FolderName ); {フォルダーの削除}
end;
< サンプル2 >
usesに ShellAPI と StdCtrls を追加する
procedure DeleteFolders(FolderName: string);
var
foStruct: TSHFileOpStruct;
begin
//末尾の区切り記号なしでパス名を返す
FolderName := ExcludeTrailingPathDelimiter(FolderName);
with foStruct do begin
wnd := Form1.Handle;
wFunc := FO_DELETE;
pFrom := PChar(FolderName+#0);
pTo := Nil;
fFlags := fof_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
fAnyOperationsAborted := False;
hNameMappings := Nil;
lpszProgressTitle := Nil;
end;
SHFileOperation(foStruct);
end;
|
|
・インターネット上の情報や書籍の内容を一部参考に作成してます。 ・コーディング内容は著作権フリーですが、使用する場合は自己責任にてお願いします。 ・記述内容に問題点や改善点がありましたらこちらまでお願いします。 |