ファイルの比較をするには?

解決


ミチ  2004-06-15 15:31:09  No: 113932  IP: [192.*.*.*]

ファイルの内容を比較をしたいのですが、そのようなAPIがあれば教えてください。
機能的にはDiffみたいな感じです。
よろしくお願いします。

編集 削除
AK47  2004-06-15 16:06:21  No: 113933  IP: [192.*.*.*]

問題はね、ファイルの内容で、何が比較をしたいですか?
大きさですか?
型ですか?

編集 削除
ミチ  2004-06-15 16:48:45  No: 113934  IP: [192.*.*.*]

diffのような内容比較です。
ファイル内容が同じか異なるか、変更されたかどうかを調べたいのです。

編集 削除
Say  2004-06-15 17:18:28  No: 113935  IP: [192.*.*.*]

2つのファイルが同じか違うかだけわかればいいのなら、
Shell関数でDOSコマンドのFCを発行して、
出力をファイルにリダイレクトして、
出力ファイルをチェックするとか。


ちなみに、「Diffのように比較」というのは結構面倒です。

単純比較だと1文字(あるいは1行)挿入か削除しただけでも
それ以降全部不一致になりますから、
バッファリングして辞書検索するなりの工夫が必要です。

編集 削除
いちゆ  2004-06-15 17:52:00  No: 113936  IP: [192.*.*.*]

まぁ、そのうち突き当たるかもしれませんが、ハッシュ関数についても調べておいたほうがいいと思います。

編集 削除
ミチ  2004-06-15 18:08:14  No: 113937  IP: [192.*.*.*]

そうですか…。APIはないのですね。
でもとりあえずファイルが同じか異なるかだけ調べたいので、解決です!
Sayさん、ご親切な回答ありがとうございました。
いちゆさんもありがとうございます。

編集 削除
ミチ  2004-06-21 13:59:39  No: 113938  IP: [192.*.*.*]

fcでやってみたんですが・・うまくできませんでした(>_<)
結果をファイルに書き込む場合は、
Shell("fc.exe text1.txt text2.txt >output.txt")
のようにやればいいんですか?これでは出力されませんでした…。

また、プロセスハンドルから標準出力を取得しようとしたのですが、
これもなぜかうまくいきませんでした…(>_<)
普通に Shell("cmd") だけなら取得できたんですけどね。
どうしてでしょう。

教えてください。お願いしますm(__)m

編集 削除
Say  2004-06-21 15:12:24  No: 113939  IP: [192.*.*.*]

>Shell("fc.exe text1.txt text2.txt >output.txt")
>のようにやればいいんですか?これでは出力されませんでした…。

リダイレクトはコマンドシェル(command.com,cmd.exeなど)の機能です。
コマンドシェル経由で利用してください。

>また、プロセスハンドルから標準出力を取得しようとしたのですが、
>これもなぜかうまくいきませんでした…(>_<)

パイプ経由で受け渡ししてください。

VBではあまりやりませんので参考サイトはほとんどありませんが・・・、
http://www.snark.co.jp/soft/faq/VB_A2.HTM
の「<Q6>に対する回答」あたり。

VCやDelphiでよければ、
「CreatePipe 標準出力 ReadFile」ぐらいのキーワードで探せば
適度にひっかかります。

編集 削除