フリーソフト

« [BCB] 文字列に含まれる環境変数を展開する | トップページ | [BCB] 書式付き文字列関数、 FormatのBCB版 »

[BCB] 空ではないフォルダを削除する関数

RemoveDir関数は空でないフォルダを削除することができません。空ではないフォルダを削除するにはSHFileOperationを使う方法もありますが、ここでは再帰的に削除する方法を示します。

bool __fastcall TForm1::ForceRemoveDir(AnsiString DirName)
{
  TSearchRec sr;
  int Attr=faAnyFile;
  bool Result=true;

  DirName=IncludeTrailingPathDelimiter(DirName);
  if (FindFirst(DirName+"*",Attr,sr)==0) {
    do {
      if ((sr.Name==".")||(sr.Name=="..")) continue;

      if ((sr.Attr&faDirectory)!=0)
        Result=Result && ForceRemoveDir(DirName+sr.Name);
      else
        Result=Result && DeleteFile(DirName+sr.Name);
    } while (FindNext(sr)==0);
    FindClose(sr);
  }
  Result=Result && RemoveDir(ExcludeTrailingPathDelimiter(DirName));
  return Result;
}

« [BCB] 文字列に含まれる環境変数を展開する | トップページ | [BCB] 書式付き文字列関数、 FormatのBCB版 »

C++Builder」カテゴリの記事

ファイル、フォルダの処理」カテゴリの記事