ファイルの使用中を知るには?

解決


やんばるくいな  2004-09-09 05:47:12  No: 10863

デジカメでjpegファイルを保存します。
そのファイルを別のフォルダへ自動的に移動させたいのですが、
保存途中の場合もあるので、
ファイルの状態(保存途中なのかどうか)を知る方法を教えて下さい。


bob  2004-09-09 06:16:30  No: 10864

ファイルを移動させようとして、
例外を見た方が早いと思いますが...


やんばるくいな  2004-09-09 17:44:14  No: 10865

bobさんありがとうございます。
    //  ファイルを移動
try
CopyFile('c:\test\data001.jpg' ,'c:\photo\data001.jpg') ,False);
DeleteFile('c:\test\data001.jpg');

 except on EFOpenError do begin
   ShowMessage('ファイルが開けません!');
 end;
 except on Exception do begin
   ShowMessage('例外が発生しました。');
 end;
end;

こんな感じでいいのでしょうか?
ところで、使用中のエラーコードは、何になるのですか?


jam  2004-09-09 18:00:58  No: 10866

ファイル移動は RenameFile 関数で可能です。
処理結果は戻り値で判定してください。


やんばるくいな  2004-09-09 18:47:44  No: 10867

jamさんありがとうございます。
実は、例では同じc:\でしたが、実際には別のドライブに移動しています。

環境を書いていませんでした。
Delphi7.0Jpro、WinXPです。


やんばるくいな  2004-09-09 19:25:06  No: 10868

bobさん、jamさん
ありがとうございました。
なんとなく見えてきました。


jam  2004-09-09 19:31:39  No: 10869

RenameFile 関数は別ドライブでも移動可能です。


やんばるくいな  2004-09-09 23:41:14  No: 10870

jamさん
ありがとうございます。
勉強不足で・・・
感謝します。


ハンドルネームを忘れました  2004-09-10 01:18:18  No: 10871

解決してるのにすみません、丁度僕も似たような事がやりたくて色々と参考になるものを探してたんですけど、(そしてこちらにたどり着いて・・)
探しながらこんなのを作ってみたんです。
これじゃダメなんですかね・・・
とりあえず開けるようになるまで開いてみて、
開けたえらとりあえず閉じる。一応、自分のPCで巨大なファイルを作ってみて、
それを別フォルダにコピーし・・・てる最中に下記を実行してみたら
問題ないようでしたよ。

  repeat
    nFileHandle := FileOpen(sPath, fmOpenRead);
  until (nFileHandle > 0);

  FileClose(nFileHandle);
  ShowMessage('OK');


固まりそう  2004-09-10 04:00:04  No: 10872

そのループだと FileOpen が成功するまで固まりますね


やんばるくいな  2004-09-10 18:32:41  No: 10873

下記のようにしてみました。
   if RenameFile(PChar(oldFile) ,PChar(newFile) ,False)=True then
        begin
          ShowMessage('成功');
        end
   else
        begin
          ShowMessage('移動に失敗しました。もう一度トライします。');
          exit;
        end;


jam  2004-09-10 18:48:30  No: 10874

この RenameFile はどこの関数ですか?
SysUtils.RenameFile は

function RenameFile(const OldName, NewName: string): Boolean;

で、第3引数はありませんし、ファイル名も String のまま渡せます。


にしの  2004-09-10 20:23:52  No: 10875

Windowsでは?


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

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






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