SHFileOperation関数での途中ストップ原因

解決


武田  2008-02-22 06:12:36  No: 29869

SHFileOperation関数でコピープログラムを作成しています。
オプション  fFlags:= FOF_RENAMEONCOLLISION or FOF_NOCONFIRMMKDIR;  
次のようなダイアログが出てコピーがストップしますが、
意味がわからず対処できません。
「006をコピーできません。このコマンドを実行するのに十分な
クォータがありません。」(6とはファイル名です)
これは、何の意味なのでしょうか、対処法のご指導をお願いいたします。
その時の環境、状態。
WindowsXP Delphi Personal6でコンパイル。
メモリー512MB、ゴミ箱に800個のオブジェクトがあります。
コピーファイル数4000個くらい。
タスクバーで見たPF使用量350MB、
全部閉じて、ゴミ箱を空にして、再度実行するとOKです。
ときどき発生します。同じファイルでコメントが出るわけではないです。
よろしくお願いします。


deldel  2008-02-22 17:58:46  No: 29870

以下は参考にはならないでしょうか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=25715
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1989039


武田  2008-02-23 04:42:47  No: 29871

deldelさん。ありがとうございます。
同じような人がいるんですね。
「FOF_WANTMAPPINGHANDLEを使う場合は、
このハンドルが不要になったら SHFreeNameMappings 関数で解放しなくてはなりません。」と書いてありますが、これは使っていないし。
しかし念のためSHFreeNameMappings 関数で解放してみようかと思いましたが、そのような例が見つけられず、そのためコードが判らず実験出来ませんでした。
ShellAPI系になるとPersonalにはヘルプもなくさっぱり判りませんでした。
引き続き研究してみます。
ありがとうございました。


武田  2008-02-29 09:46:56  No: 29872

自己レスです。
その後試行錯誤しましたが、ほぼ原因がわかりましたのでご報告します。
ShfOperation関数を使ってバックアッププログラムを作成しているのですが、
このエラーで止まるので不安になったのですが、
(1)友人にもらった外付けのHDDに大量にコピーするとき発生する
様な気がしてきました。内蔵HDD間では発生したことがない。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1989039
ここで、はっと思い当たったためセーフモードでスキャンディスクをしたら、
50GB、58万ファイルのバックアップでも発生しなくなりました。
たぶんこれだろうと思っています。
ありがとうございました。


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

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






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