Delphi

解決


たまねぎ小僧  2009-11-27 17:31:37  No: 36308  IP: 192.*.*.*

こんにちは、初めて質問させていただきます。

Server:Windows Server2003
Client:Vista

Vista端末にCopyFileでコピーしたときに、稀にファイルが破損する現象が
発生しており、その対策として、
ServerからCopyFileでファイルをコピーした後(ここまでは実装済み)
それらが同一のファイルであるかを比較しようと考えています。
それでご質問なのですが、バイナリ形式のチェックを行うにはどうすればよいでしょうか。
またファイルの比較のやり方として、どのようなやり方がメジャーなのでしょうか。

ツールはDelphi2007を使用しております。
よろしくお願いします。

編集 削除
たまねぎ小僧  2009-11-27 17:36:15  No: 36309  IP: 192.*.*.*

申し訳ございません。仮タイトルで登録してしまいました。

編集 削除
MD5  2009-11-27 21:31:07  No: 36310  IP: 192.*.*.*

MD5みたいなハッシュでいいんじゃない?

http://homepage1.nifty.com/Ayakawa/soft/index.html

編集 削除
バイト比較  2009-11-27 22:34:49  No: 36311  IP: 192.*.*.*

コピー後にオリジナルと比較する時に、どちらも
もう一度読み込むのであれば同時にオープンして
1バイトずつ比較するのがハッシュ計算がない分
早いのではないでしょうか。

ファイルコピーを自前で実装して同時にMD5の計算をするなら
オリジナルの再読み込みがない分早くできると思います。

「稀にファイルが破損する現象」の方がやばくないですか?

編集 削除
KHE00221  2009-11-28 03:42:49  No: 36312  IP: 192.*.*.*

ウイルスチェックしてますか?

編集 削除
ってか  2009-11-28 10:18:07  No: 36313  IP: 192.*.*.*

COPYコマンドでコピーしても問題はないんですか?

編集 削除
たまねぎ小僧  2009-11-30 13:44:20  No: 36314  IP: 192.*.*.*

その後の調査で、現象の原因は結局わからなかったのですが、
破損したファイルは必ずタイムスタンプが
最新の時間に更新されることがわかりました。

時間的な問題もあり、今回はタイムスタンプをチェックするに留める方向になりました。
ファイル比較するようであればバイトチェック処理を追加したと思います。
Delphiにはファイル比較関数が標準ではないみたいですね。

ウイルスチェックは行われています。
COPYコマンドは問題なかったですが、既存処理をあまり変えたくないという
矛盾した意向がありまして・・・汗

ということでいったん解決とさせていただきます。
ありがとうございました。

編集 削除