ファイルまたはフォルダの削除エラーを回避するには?


リトルさん  2004-03-19 19:07:10  No: 7758

ディレクトリリストボックスを使ってフォルダAのファイルを
フォルダBにコピーしています。下記のような感じです。
間違ってたらすみません。
if FindFirst(Form1.DirectoryListBox1.Directory + '\*.*',0,AFile ) = 0 then
  begin
     repeat
     AFileName := Form1.DirectoryListBox1.Directory  + AFile.Name;
     BFileName := Form1.DirectoryListBox2.Directory  + AFile.Name;
     Copyfile(PChar(AFileNAME) , PChar(BFileName) , False);
     until FindNext(sr) <> 0;
     FindClose(sr);
 end

フォルダAのファイルをフォルダBにコピーしている最中に、
フォルダA、もしくはコピー最中のフォルダAのファイルを
削除しようとすると、
////////////////////////////////////////////////////////////
//「ファイルまたはフォルダの削除エラー」                  //
//AFileを削除できません。共有違反がありました。           //
//送り側または受け側のファイルは使用中の可能性があります。//
////////////////////////////////////////////////////////////
が表示されます。
これを出さないようにしたいと考えています。
コピー最中に関わりなく強制的に削除する方法
コピー最中のファイルが終わった後、そのファイルを消す方法
など他にもあると思いますがやり方がわかりません。
よろしくお願いします。


にしの  2004-03-19 19:12:34  No: 7759

Hookしてしまえばできます。
もっと簡単な方法があるかもしれませんが。

デモの中に、copyhookというのがあると思います。
ICopyHookインターフェースの実装をして、シェルに組み込んでおけばOKです。


リトルさん  2004-03-19 19:16:01  No: 7760

にしのさん回答ありがとうございます。
早速、調べてやってみます。


リトルさん  2004-03-19 19:59:46  No: 7761

シェルというものが、私のような初心者には難しすぎて
あまり理解できませんでした;;
わかる人にはわかるかもしれないので下記を載せておきます。
http://www.asahi-net.or.jp/~GV4J-SGUR/narik/stp002b.htm#ICopyHook
もうすこし調べてみます。


リトルさん  2004-03-25 19:23:13  No: 7762

どこでどのように宣言し、どう組み込めばいいのかなど
基本的なシェルAPIの使い方がわからないので、
もう少し簡単な他の方法はないでしょうか?
良い助言をお待ちしております。よろしくお願いします。


にしの  2004-03-25 20:24:28  No: 7763

コピーしているアプリケーションとは別のアプリケーション(Exploreなど)で削除しているのですよね。
そうであれば、エラーを出しているのは別のアプリケーションですから、コピーしているアプリケーションからエラーを出さないようには出来ないと思います。

例えば、エクスプローラでコピー中に、別のエクスプローラで削除すると同じようにエラーが出ます。


リトルさん  2004-03-25 20:52:07  No: 7764

にしのさんありがとうございます。
にしのさんの言うとおり、アプリケーションでファイルのコピーを行い、
エクスプローラで削除しています。
コピー側アプリケーションからの、このエラーの回避は無理なんですね。
できないことを言ってしまい、申し訳ございませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加