Delphi

解決


たまねぎ小僧  2009-11-28 02:31:37  No: 36308

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

Server:Windows Server2003
Client:Vista

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

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


たまねぎ小僧  2009-11-28 02:36:15  No: 36309

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


MD5  2009-11-28 06:31:07  No: 36310

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

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


バイト比較  2009-11-28 07:34:49  No: 36311

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

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

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


KHE00221  2009-11-28 12:42:49  No: 36312

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


ってか  2009-11-28 19:18:07  No: 36313

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


たまねぎ小僧  2009-11-30 22:44:20  No: 36314

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

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

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

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


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

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






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