掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
RmDirが出来ません・・ (ID:5566)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
久しぶりに投稿します。 以下のようなサブルーチンを作って フォルダの中のファイルと、そのフォルダを削除したいのですが、 肝心のフォルダの削除がうまくいきません。 アプリ内で一時的に作ったフォルダを削除したいだけなので、 フォルダ内にはファイルしかありません。 RmDirをするとI/Oエラー32が出ます(共有違反)。 RemoveDirをするとエラーは出ませんが削除もできません。 デバッガで追跡したところ・・ 1、RmDirやRemoveDirの前段階でフォルダは空です。 2、カレントDirも別Dirに移動しています。 3、FindCloseでSearchRecを解放してます。 ・・が、結局フォルダが残ったままです。 アプリを動かしたままエクスプローラ上で削除しようとすると共有違反が出ますので、何かしら握っているものと思いますが、解放の方法が分かりません・・ ご教授願いますでしょうか? procedure DeleteDir(Directory: String); var SearchRec: TSearchRec; OldDirectory: String; begin OldDirectory := GetCurrentDir; SetCurrentDir(Directory); // ファイルの検索を開始する if FindFirst('*.*', faAnyFile, SearchRec) = 0 then begin try repeat if(SearchRec.Name <> '.')and(SearchRec.Name <> '..')then begin // ディレクトリの中身を全部削除する DeleteFile( Directory + SearchRec.Name ); end; // 次のファイルを探してリピートする until FindNext(SearchRec) <> 0; finally // SearchRecを解放 FindClose(SearchRec); end; end; // カレントDirを変更 SetCurrentDir(OldDirectory); // ディレクトリの削除 if DirectoryExists(Directory) then begin try // ↓↓全部試しましたがDirの削除が出来ません↓↓ RmDir( PChar(Directory) ); // RmDir( Directory ); // RemoveDir( Directory ); except end; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.