< サンプル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; |
・インターネット上の情報や書籍の内容を一部参考に作成してます。 ・コーディング内容は著作権フリーですが、使用する場合は自己責任にてお願いします。 ・記述内容に問題点や改善点がありましたらこちらまでお願いします。 |