0

たとえば、ソース内のコードのバージョンを更新されたバージョンと比較する方法と同様に、2 つのファイルを比較しようとしています。私はまだ少し遅いコーダーです:-S. ここでの私の問題は、実際に正しく設計することです。そのため、介入して、どのように最適に機能し、うまくいけば複雑になりすぎないかを教えてください.

したがって、このための私の現在の計画は、基本的に両方のファイルを別々のテキスト ボックス (?) にロードすることです。それらの両方を別々に読み取って 2 つの arraylist にストリーミングし、arrayslist を互いに比較します。また、ファイルサイズなどについていくつかの追加チェックを行います。

比較しているテキストボックスを循環して、たとえば違いがある場所を赤で強調表示するにはどうすればよいですか? どうやってそれをするのかわかりませんか?

高レベルの推測では、2 つの配列 (要素 11 など) の違いを読み取り、テキスト ボックスのデータの場所/要素を強調表示しますか?

4

2 に答える 2

4

これを学習体験として行っているのでない限り、既存の実装を活用することをお勧めします...車輪の再発明は避けてください。ファイルを効率的に区別することは簡単な作業ではありません。

GoogleのDiffMatchPatchのC#ポートがあります

http://code.google.com/p/google-diff-match-patch/

これをC#としてDLLにコンパイルしてから、VB.NetプロジェクトのDLLを使用できます。

あなたの目的がそのような複雑なトピックで学ぶことであるとしても、私は既存の実装を研究することを提案します。

于 2013-02-12T21:34:10.120 に答える
2

ファイルを比較できるようにするために、ファイルの内容を表示する必要はありません。クラスのメソッドを使用しSystem.IO.Fileてコンテンツを読み取り、Linq クエリを使用してそれらを比較できます。

シンプルで短いアプローチは次のとおりです。

Dim f1Lines = System.IO.File.ReadLines(file1Path)
Dim f2Lines = System.IO.File.ReadLines(file1Path)
Dim inFile1Only = f1Lines.Except(f2Lines)
Dim inFile2Only = f2Lines.Except(f1Lines)
Dim sameInBoth = f1Lines.Intersect(f2Lines)

結果をさまざまなテキストボックスに表示できます。使用できます

TxtSame.Lines = sameInBoth.ToArray()

にラインを割り当てTextBoxます。

于 2013-02-12T21:37:55.903 に答える