プロが教えるわが家の防犯対策術!

いつもお世話になりありがとうございます。
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);
というように連続でコピーしたいのですが・・・

A 回答 (4件)

> > RaiseLastWin32Error


> どういう意味なのでしょうか?
> 勉強不足で申し訳ありません。

意味は、"procedure RaiseLastWin32Error" の呼び出しです。
RaiseLastWin32Error は、GetLastError() を呼んでエラーの詳細を調べます。結果を例外として送出します。
とりあえず、CopyFile() が絶対に失敗する状況で、試してみると良いと思います。

この回答への補足

ご報告おくれまして申し訳ありません。
色々試したのですが、
「コードエラー2が表示され
ファイルがありません」と出ます。
ファイルは存在するのですが。。。。
どうしてなのでしょうか?

補足日時:2003/03/03 13:30
    • good
    • 0

> >RaiseLastWin32Error


> どういう意味なのでしょうか?
> 勉強不足で申し訳ありません。

WEBで検索エンジン(Google、Yahoo等)が使えるのはご存知でしょうか?

この回答への補足

Googleで検索して調べましたら以下のコメントが書かれ
ていました。
「RaiseLastWin32Error は,最後に発生した Win32 エラーの例外を生成します。」
何となく意味はわかるのですが、
これをどのように使うか?。。。。

補足日時:2003/02/26 10:38
    • good
    • 0

if not CopyFile(…) then RaiseLastWin32Error;


などとしたら、いかがでしょうか?

この回答への補足

>RaiseLastWin32Error
どういう意味なのでしょうか?
勉強不足で申し訳ありません。

補足日時:2003/02/26 08:23
    • good
    • 0

> コピーできない時があります。



というのが具体的にどんな状況なのかわかりませんので、憶測ですが・・・。

例外処理の記述が適切でないために、本来エラーになるべき処理(例 : 空き容量不足、ネットワークドライブが無効、等)がエラーにならずに流れてしまい、結果として「??」になってしまっている、ということはありませんか?

ネットワーク越しのコピーだと思うので、ファイルの書き込みが遅延して処理が同期しないことはあり得ると思います。
その場合は、何らかの方法でコピーが完了するまで待機する必要があるんじゃないでしょうか?
具体的には、(思い付きですが)

・コピー先のファイルサイズを監視して、コピー元のファイルと同サイズに
 なるまで待機する。
・コピー先のファイルがエラーにならずに排他で開けるまで待機する。

とかでしょうか。(上手く行くかわかりませんが・・・)

この回答への補足

>というのが具体的にどんな状況なのかわかりませんので、憶測ですが・・・。
申し訳ありません。
ネットワーク越しのコピーでたぶんファイルの書き込みが遅延して処理が同期しないのではと思うのですが。

補足日時:2003/02/26 08:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!