- 締切済み
Delphi 6
いつもお世話になりありがとうございます。 Delphi 6についてご教授お願い致します。 CopyFileにてファイルをコピーしているのですが、 コピーできない時があります。 サイズの大きいファイルとか関係あるのでしょうか? ************************************************ CopyFile('C:\TEST1.TXT', 'Z:\TEST1.TXT', False); CopyFile('C:\TEST2.TXT', 'Z:\TEST2.TXT', False); CopyFile('C:\TEST3.TXT', 'Z:\TEST3.TXT', False); というように連続でコピーしたいのですが・・・
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- jmh
- ベストアンサー率23% (71/304)
> > RaiseLastWin32Error > どういう意味なのでしょうか? > 勉強不足で申し訳ありません。 意味は、"procedure RaiseLastWin32Error" の呼び出しです。 RaiseLastWin32Error は、GetLastError() を呼んでエラーの詳細を調べます。結果を例外として送出します。 とりあえず、CopyFile() が絶対に失敗する状況で、試してみると良いと思います。
> >RaiseLastWin32Error > どういう意味なのでしょうか? > 勉強不足で申し訳ありません。 WEBで検索エンジン(Google、Yahoo等)が使えるのはご存知でしょうか?
補足
Googleで検索して調べましたら以下のコメントが書かれ ていました。 「RaiseLastWin32Error は,最後に発生した Win32 エラーの例外を生成します。」 何となく意味はわかるのですが、 これをどのように使うか?。。。。
- jmh
- ベストアンサー率23% (71/304)
if not CopyFile(…) then RaiseLastWin32Error; などとしたら、いかがでしょうか?
補足
>RaiseLastWin32Error どういう意味なのでしょうか? 勉強不足で申し訳ありません。
> コピーできない時があります。 というのが具体的にどんな状況なのかわかりませんので、憶測ですが・・・。 例外処理の記述が適切でないために、本来エラーになるべき処理(例 : 空き容量不足、ネットワークドライブが無効、等)がエラーにならずに流れてしまい、結果として「??」になってしまっている、ということはありませんか? ネットワーク越しのコピーだと思うので、ファイルの書き込みが遅延して処理が同期しないことはあり得ると思います。 その場合は、何らかの方法でコピーが完了するまで待機する必要があるんじゃないでしょうか? 具体的には、(思い付きですが) ・コピー先のファイルサイズを監視して、コピー元のファイルと同サイズに なるまで待機する。 ・コピー先のファイルがエラーにならずに排他で開けるまで待機する。 とかでしょうか。(上手く行くかわかりませんが・・・)
補足
>というのが具体的にどんな状況なのかわかりませんので、憶測ですが・・・。 申し訳ありません。 ネットワーク越しのコピーでたぶんファイルの書き込みが遅延して処理が同期しないのではと思うのですが。
補足
ご報告おくれまして申し訳ありません。 色々試したのですが、 「コードエラー2が表示され ファイルがありません」と出ます。 ファイルは存在するのですが。。。。 どうしてなのでしょうか?