RenameFile後に古いファイルが消えずに残る(ように見える)のを正すには?

解決


賭博アルプス王ハイジ  2005-12-04 21:48:23  No: 19048  IP: 192.*.*.*

デスクトップ上または開いているフォルダ上に存在する、「目に見えているファイル」に対して
RenameFile
で名前を変更すると、すぐに新しい名前のファイルができます。
しかし、このとき古い名前のファイルも消えずに残って見えます。

実は、この古いファイルは存在していないファイルのようで、マウスで移動したり削除したりできず、ファイルサイズをみると0バイトとなっています。

デスクトップやフォルダの表示を「最新の状態に更新」するか、フォルダなら閉じてから開き直すと、やっと見えなくなりますが、自分で行わない限りはいつまでも残っています。

RenameFile後には、自分でShellの表示を更新するような、なんらかの命令をする必要があるのでしょうか?

編集 削除
Syake  2005-12-05 08:19:20  No: 19049  IP: 192.*.*.*

RenameFile関数
どのようにしたらそうなるのでしょうか?
RenameFile('c:\Test.csv','c:\abcd.txt');
>RenameFile後には、自分でShellの表示を更新するような
は必要ないのでは・・・
ちなみに私の環境ではそのようにはなりません。
WinXP SP2 D2005

編集 削除
賭博アルプス王ハイジ  2005-12-05 13:37:21  No: 19050  IP: 192.*.*.*

>ちなみに私の環境ではそのようにはなりません。

ええっ?

それでは、RenameFileではなく、Windowsの環境の方の問題かもしれません。
以前、Win高速化ADVANCEの雑誌の付録でいろいろ設定したことがあったのですが、それが原因かもしれません。
いずれにせよ、シェルに最新の表示に更新させるようなAPIがないか探してみます。
(私の環境はWin XP Pro Version2002 SP,WindowsUpdateはすべて施行)

編集 削除
bluvenz  2005-12-06 12:45:05  No: 19051  IP: 192.*.*.*

フォルダ内の自動更新を切ってるとか…?
確か、似たような雑誌でも取り上げられてた気がします
これでパフォーマンスアップ!!みたいな
設定方法は…すいません、他の人に^^;

編集 削除
にしの  2005-12-06 16:52:54  No: 19052  IP: 192.*.*.*

Explorerで期待通りに動くのであれば、SHFileOperation関数を使ってみるとよいかも。

編集 削除
賭博アルプス王ハイジ  2005-12-06 18:23:56  No: 19053  IP: 192.*.*.*

みなさまありがとうございます。


いろいろ実験してみたら、この現象がおきるプログラムとおきないプログラムがあることがわかり、さらに調べてみましたところ、
RenameFileを行ったあと、すぐその後に、再度ファイルを扱うコードが続くときに、おきるようです。
今回はmp3infのライブラリを使用したときでした。

いずれにせよ、Delphi固有の問題というわけではなさそうなので、解決とさせていただきます。ありがとうございました。

編集 削除
賭博アルプス王ハイジ  2005-12-06 18:24:35  No: 19054  IP: 192.*.*.*

解決チェック

編集 削除