デスクトップ上または開いているフォルダ上に存在する、「目に見えているファイル」に対して
RenameFile
で名前を変更すると、すぐに新しい名前のファイルができます。
しかし、このとき古い名前のファイルも消えずに残って見えます。
実は、この古いファイルは存在していないファイルのようで、マウスで移動したり削除したりできず、ファイルサイズをみると0バイトとなっています。
デスクトップやフォルダの表示を「最新の状態に更新」するか、フォルダなら閉じてから開き直すと、やっと見えなくなりますが、自分で行わない限りはいつまでも残っています。
RenameFile後には、自分でShellの表示を更新するような、なんらかの命令をする必要があるのでしょうか?
RenameFile関数
どのようにしたらそうなるのでしょうか?
RenameFile('c:\Test.csv','c:\abcd.txt');
>RenameFile後には、自分でShellの表示を更新するような
は必要ないのでは・・・
ちなみに私の環境ではそのようにはなりません。
WinXP SP2 D2005
>ちなみに私の環境ではそのようにはなりません。
ええっ?
それでは、RenameFileではなく、Windowsの環境の方の問題かもしれません。
以前、Win高速化ADVANCEの雑誌の付録でいろいろ設定したことがあったのですが、それが原因かもしれません。
いずれにせよ、シェルに最新の表示に更新させるようなAPIがないか探してみます。
(私の環境はWin XP Pro Version2002 SP,WindowsUpdateはすべて施行)
フォルダ内の自動更新を切ってるとか…?
確か、似たような雑誌でも取り上げられてた気がします
これでパフォーマンスアップ!!みたいな
設定方法は…すいません、他の人に^^;
Explorerで期待通りに動くのであれば、SHFileOperation関数を使ってみるとよいかも。
みなさまありがとうございます。
いろいろ実験してみたら、この現象がおきるプログラムとおきないプログラムがあることがわかり、さらに調べてみましたところ、
RenameFileを行ったあと、すぐその後に、再度ファイルを扱うコードが続くときに、おきるようです。
今回はmp3infのライブラリを使用したときでした。
いずれにせよ、Delphi固有の問題というわけではなさそうなので、解決とさせていただきます。ありがとうございました。
解決チェック
ツイート | ![]() |