|
|||||
テキストの差分を解析するライブラリ(DLL)、差分解析するテキストの文字コード判定 ダウンロード 画面イメージ 仕様(引数)の詳細説明 使用例(VB6) 使用例(VB.NET) 使用例(C#.NET) 使用例(VBS) ※ ファイル比較関係のその他のツール、サンプルソースはこちらです。 ファイル比較/フォルダ比較 ==================================================================================================== 【タイトル 】テキスト差分解析DLL(VB6/VB.NET/C#.NET) 【Version 】1.1.0.1 【ファイル 】NonDiffDll.zip 【圧縮ファイルの中身】NonDiffVb6.dll、NonDiffNet.dll、ReadMe.txt、サンプルソース 【動作確認 】Windows8/Windows7/XP/2000 【必要ソフト 】VB6ランタイムまたはMicrosoft .NET Framework Version 2.0 【ソフト種別 】フリーソフト(寄付歓迎) 【作者/著作権者 】のん 【作者への連絡先 】http://nonsoft.la.coocan.jp/ 【最近の主な変更(1) 】差分解析精度UPおよび高速化 【最近の主な変更(2) 】空白文字の違いを差分としない機能追加 【最近の主な変更(3) 】VB SCRIPTでのテキスト差分解析対応(VBSとVBAで動作確認) ==================================================================================================== 1.はじめに 本プログラムをダウンロード頂きまして誠にありがとうございます。 本プログラムは、テキスト差分を解析するDLLです。 サンプルソースとしてVB6版/VB.NET版/C#.NET版を用意しています。 本DLLは「テキスト差分表示ツール」で使っているロジックをライブラリ化しました。 また、本DLLは差分解析するテキストファイルの文字コード判定と変換が出来ます。 対応している文字コードはSJIS/JIS/EUC/UNICODE/UTF7/UTF8/バイナリです。 (注)100%完璧な文字コード判定は文字コードの性質上ありえませんが、 可能な限り高精度な判定を目指しています。 (注)64ビットの環境(Windows7等)でVBSを実行する際はSysWOW64を使用してください。 (例)C:\Windows\SysWOW64\CScript.exe VbsAp.vbs <関連プログラム> ・テキスト差分表示ツール→2つのテキストファイルの差分を表示します。コマンド ライン(バッチ)/FTP対応の差分出力ツールです。本DLLの差分アルゴリズム でテキスト差分を解析します。 ・フォルダ内のファイル比較ツール→フォルダ内の全ファイルを比較して一覧表示し ます。文字コードが異なるフォルダの全ファイル比較が出来る、FTP対応の同期 支援ツールです。本ツールのフォルダ比較機能として使用しています。 2.インストール方法/アンインストール方法 本プログラムはインストール操作が必要ありません。 アンインストール操作も必要ありませんので、本プログラム一式を削除してください。 NonDiffVb6.dllを使用する場合はVB6がインストールされている必要があります。 NonDiffNet.dllを使用する場合はVS2005(Microsoft .NET Framework Version 2.0)以上が インストールされている必要があります。 ------------------------------------------------------------------------------------- ※VS2010(Microsoft .NET Framework Version 4.0)版は次のURLからダウンロード出来ます。 VS2010(Microsoft .NET Framework Version 4.0)版のダウンロード ------------------------------------------------------------------------------------- 3.著作権・ライセンス 本プログラムの全ての著作権は「のん」が所有しています。 本プログラムを転載する場合は著作権所有者の許可が必要となります。 (NonSoftの紹介リンクは問題ありませんので宜しくお願いします) また、著作権所有者が許可したサイトでのみダウンロードが可能となります。 再配布は禁止させて頂きます。商用利用についての制限はありません。 本プログラムはフリーライセンス(寄付歓迎)です。 本プログラムを長期間使用される場合は、寄付やホームページ紹介等してください。 寄付はこちらでお願いします。http://nonsoft.la.coocan.jp/kifu.html 4.免責事項 本プログラムが原因による損害・問題に対し一切の責任を負えません。 ご利用者の責任の範囲内でお使いください。 5.作者への問合せについて 作者への問合せはメールのみとさせて頂きます。 問合せ内容によっては回答出来ない場合もございますので予めご了承願います。 また、作者不在時または問い合わせ数が多い場合など、 回答に日数がかかる場合がございますので予めご了承願います。 <画面イメージ> <使用例(VB6)> ' Form に MSFlexGrid を1つ追加したサンプルです。 Option Explicit ' カレントディレクトリを変更するAPI Private Declare Function SetCurrentDirectory Lib "kernel32" Alias _ "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long Private objDiff As Object ' テキスト差分オブジェクト ' フォームロード Private Sub Form_Load() ' テキスト差分オブジェクト生成 InitNonDiff ' テキストファイル読込 Dim strDt0 As String Dim strDt1 As String strDt0 = TextRead(App.Path & "\TestSJIS.txt") strDt1 = TextRead(App.Path & "\TestUTF8.txt") ' テキスト差分解析 Dim dfList() As String dfList = objDiff.NonDiff(strDt0, strDt1, 5, 5, 10, "file0", "file1") ' テキスト差分表示 DspDiffList dfList End Sub ' テキスト差分オブジェクト生成 Private Sub InitNonDiff() On Error Resume Next ' カレントフォルダの変更 SetCurrentDirectory App.Path ' NonDiffVb6.dllの存在チェック If CreateObject("NonDiffVb6.NonDiffClass") Is Nothing Then If Len(Dir("NonDiffVb6.dll")) <> 0 Then ' NonDiffVb6.dllのレジストリ登録 Shell "regsvr32 /s NonDiffVb6.dll", vbHide Else ' NonDiffVb6.dllをNonDiffAp.exeと同じフォルダに置いてください。 MsgBox _ "NonDiffVb6.dllが見つかりませんでした。" & vbCrLf & vbCrLf & _ "NonDiffVb6.dllを" & vbCrLf & "[" & App.Path & "]" & vbCrLf & _ "に置いてください。" End End If End If ' NonDiffVb6.dllのオブジェクト生成 Set objDiff = CreateObject("NonDiffVb6.NonDiffClass") If objDiff Is Nothing Then MsgBox "NonDiffVb6.dllエラー(オブジェクトが生成出来ません)" End End If End Sub ' テキスト差分表示 Private Sub DspDiffList(ByRef dfList() As String) ' 差分リスト初期化 ListInit ' テキスト差分の一覧表示 Dim i As Long For i = 1 To UBound(dfList, 2) ' 表示データ変換(TABはスペースに変換) Dim strDt(1) As String strDt(0) = Replace(dfList(2, i), vbTab, " ") strDt(1) = Replace(dfList(4, i), vbTab, " ") ' 差分リスト設定(行追加) MSFlexGrid1.Rows = MSFlexGrid1.FixedRows + i MSFlexGrid1.Row = MSFlexGrid1.Rows - 1 ' 差分リスト設定(表示データ設定) MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = i MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = dfList(0, i) MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2) = dfList(1, i) MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 3) = strDt(0) MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4) = strDt(1) MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = dfList(3, i) ' 差分リスト設定(背景色変更) Dim colval As Long If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = "ADD" Then colval = &HBBBBFF ElseIf MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = "DEL" Then colval = &HDDDDDD ElseIf MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = "UPD" Then colval = &HFFFFBB Else colval = &HFFFFFF End If MSFlexGrid1.Col = 1: MSFlexGrid1.CellBackColor = colval MSFlexGrid1.Col = 2: MSFlexGrid1.CellBackColor = colval MSFlexGrid1.Col = 3: MSFlexGrid1.CellBackColor = colval MSFlexGrid1.Col = 4: MSFlexGrid1.CellBackColor = colval MSFlexGrid1.Col = 5: MSFlexGrid1.CellBackColor = colval Next i End Sub ' テキストファイル読込 Public Function TextRead(ByVal fpath As String) As String ' テキストをバイト配列で読込 Dim bytCode() As Byte ReDim bytCode(FileLen(fpath) - 1) As Byte Dim intFileNo As Integer intFileNo = FreeFile Open fpath For Binary As intFileNo Get intFileNo, , bytCode Close ' 文字コード判定(blnBin=バイナリ判定有り) Dim codeName As String codeName = objDiff.GetCodeName(bytCode, blnBin:=True) ' 文字コード変換 Select Case codeName Case "SJIS" TextRead = objDiff.SJIS_To_VbUnicode(bytCode) Case "JIS" TextRead = objDiff.JIS_To_VbUnicode(bytCode) Case "EUC" TextRead = objDiff.EUC_To_VbUnicode(bytCode) Case "UNICODE" TextRead = objDiff.UNICODE_To_VbUnicode(bytCode) Case "UTF7" TextRead = objDiff.UTF7_To_VbUnicode(bytCode) Case "UTF8" TextRead = objDiff.UTF8_To_VbUnicode(bytCode) Case "BIN" TextRead = objDiff.SJIS_To_VbUnicode(bytCode) Case Else TextRead = objDiff.SJIS_To_VbUnicode(bytCode) End Select Exit Function End Function ' 差分リスト初期化 Private Sub ListInit() With MSFlexGrid1 .Clear .AllowUserResizing = flexResizeColumns .Rows = 2 .Cols = 6 .FixedRows = 1 .FixedCols = 1 .Row = 0 .ColWidth(0) = 700 .Col = 0: .Text = "No." .CellAlignment = flexAlignCenterCenter .ColAlignment(0) = flexAlignRightCenter .ColWidth(1) = 700 .Col = 1: .Text = "状態" .CellAlignment = flexAlignCenterCenter .ColAlignment(1) = flexAlignCenterCenter .ColWidth(2) = 700 .Col = 2: .Text = "行No." .CellAlignment = flexAlignCenterCenter .ColAlignment(2) = flexAlignRightCenter .ColWidth(3) = 4000 .Col = 3: .Text = "ファイル1" .CellAlignment = flexAlignCenterCenter .ColAlignment(3) = flexAlignLeftCenter .ColWidth(4) = 4000 .Col = 4: .Text = "ファイル2" .CellAlignment = flexAlignCenterCenter .ColAlignment(4) = flexAlignLeftCenter .ColWidth(5) = 700 .Col = 5: .Text = "行No." .CellAlignment = flexAlignCenterCenter .ColAlignment(5) = flexAlignRightCenter .Row = MSFlexGrid1.FixedRows .Col = MSFlexGrid1.FixedCols .RowSel = MSFlexGrid1.Row .ColSel = MSFlexGrid1.Col .FocusRect = flexFocusLight .SelectionMode = flexSelectionFree End With End Sub <使用例(VB.NET)> ' Form に ListView を1つ追加したサンプルです。 Public Class Form1 Dim objDiff As NonDiffNet.NonDiffClass ' テキスト差分オブジェクト ' フォームロード Private Sub Form1_Load( _ ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' テキスト差分オブジェクト生成 InitNonDiff() ' テキストファイル読込 Dim strDt0 As String Dim strDt1 As String Dim AppPath As String = System.AppDomain.CurrentDomain.BaseDirectory strDt0 = TextRead(AppPath & "TestSJIS.txt") strDt1 = TextRead(AppPath & "TestUTF8.txt") ' テキスト差分解析 Dim dfList(,) As String dfList = objDiff.NonDiff(strDt0, strDt1, 5, 5, 10, "file0", "file1") ' テキスト差分表示 DspDiffList(dfList) End Sub ' テキスト差分オブジェクト生成 Private Sub InitNonDiff() objDiff = New NonDiffNet.NonDiffClass End Sub ' テキスト差分表示 Private Sub DspDiffList(ByRef dfList(,) As String) ' 差分リスト初期化 ListInit() Dim i As Long For i = 1 To UBound(dfList, 2) ' 表示データ変換(TABはスペースに変換) Dim strDt(1) As String strDt(0) = Replace(dfList(2, i), vbTab, " ") strDt(1) = Replace(dfList(4, i), vbTab, " ") ' 差分リスト設定(表示データ設定) Dim dsp(6) As String dsp(1) = i dsp(2) = dfList(0, i) dsp(3) = dfList(1, i) dsp(4) = strDt(0) dsp(5) = strDt(1) dsp(6) = dfList(3, i) Dim item As ListViewItem = New ListViewItem(dsp) ' 差分リスト設定(背景色変更) If dsp(2) = "ADD" Then item.BackColor = System.Drawing.Color.Pink ElseIf dsp(2) = "DEL" Then item.BackColor = System.Drawing.Color.LightGray ElseIf dsp(2) = "UPD" Then item.BackColor = System.Drawing.Color.Cyan Else item.BackColor = System.Drawing.Color.White End If ' 差分リスト設定(行追加) ListView1.Items.Add(item) Next End Sub ' テキストファイル読込 Private Function TextRead(ByVal fpath As String) As String Dim sr As IO.Stream = Nothing Dim br As IO.BinaryReader = Nothing Try ' テキストをバイト配列で読込 Dim bytCode() As Byte = New Byte(-1) {} sr = IO.File.Open(fpath, IO.FileMode.Open, IO.FileAccess.Read) br = New IO.BinaryReader(sr) bytCode = br.ReadBytes(sr.Length) ' 文字コード判定(blnBin=バイナリ判定有り) Dim codeName As String codeName = objDiff.GetCodeName(bytCode, blnBin:=True) ' 文字コード変換 Select Case codeName Case "SJIS" TextRead = objDiff.SJIS_To_VbUnicode(bytCode) Case "JIS" TextRead = objDiff.JIS_To_VbUnicode(bytCode) Case "EUC" TextRead = objDiff.EUC_To_VbUnicode(bytCode) Case "UNICODE" TextRead = objDiff.UNICODE_To_VbUnicode(bytCode) Case "UTF7" TextRead = objDiff.UTF7_To_VbUnicode(bytCode) Case "UTF8" TextRead = objDiff.UTF8_To_VbUnicode(bytCode) Case "BIN" TextRead = objDiff.SJIS_To_VbUnicode(bytCode) Case Else TextRead = objDiff.SJIS_To_VbUnicode(bytCode) End Select Exit Function Catch ex As Exception Throw ex Finally If br Is Nothing = False Then br.Close() If sr Is Nothing = False Then sr.Close() End Try End Function ' 差分リスト初期化 Private Sub ListInit() ListView1.Items.Clear() ListView1.FullRowSelect = True ListView1.GridLines = True ListView1.View = View.Details Dim columnDmy As ColumnHeader = New ColumnHeader Dim columnNo0 As ColumnHeader = New ColumnHeader Dim columnTyp As ColumnHeader = New ColumnHeader Dim columnNo1 As ColumnHeader = New ColumnHeader Dim columnFl1 As ColumnHeader = New ColumnHeader Dim columnFl2 As ColumnHeader = New ColumnHeader Dim columnNo2 As ColumnHeader = New ColumnHeader columnDmy.Width = 0 columnNo0.Text = "No." columnNo0.Width = 45 columnTyp.Text = "状態" columnTyp.Width = 45 columnNo1.Text = "行No." columnNo1.Width = 45 columnFl1.Text = "ファイル1" columnFl1.Width = 265 columnFl2.Text = "ファイル2" columnFl2.Width = 265 columnNo2.Text = "行No." columnNo2.Width = 45 Dim colHeaderRegValue() As ColumnHeader = _ {columnDmy, columnNo0, columnTyp, columnNo1, columnFl1, columnFl2, columnNo2} ListView1.Columns.AddRange(colHeaderRegValue) End Sub End Class <使用例(C#.NET)> // Form に ListView を1つ追加したサンプルです。 namespace CsNetAp { public partial class Form1 : Form { NonDiffNet.NonDiffClass objDiff; // テキスト差分オブジェクト public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // テキスト差分オブジェクト生成 InitNonDiff(); // テキストファイル読込 String strDt0; String strDt1; String AppPath = System.AppDomain.CurrentDomain.BaseDirectory; strDt0 = TextRead(AppPath + "TestSJIS.txt"); strDt1 = TextRead(AppPath + "TestUTF8.txt"); // テキスト差分解析 String[,] dfList; dfList = objDiff.NonDiff(strDt0, strDt1, 5, 5, 10, "file0", "file1"); // テキスト差分表示 DspDiffList(dfList); } // テキスト差分オブジェクト生成 private void InitNonDiff(){ objDiff = new NonDiffNet.NonDiffClass(); } // テキスト差分表示 private void DspDiffList(String[,] dfList) { // 差分リスト初期化 ListInit(); long i; for (i = 1; i <= dfList.GetLength(1) - 1; i++) { if (i == dfList.GetLength(1) - 1 && dfList[2, i] == "" && dfList[4, i] == "") continue; // 表示データ変換(TABはスペースに変換) String[] strDt = new String[2]; if (dfList[2, i] == null) dfList[2, i] = ""; if (dfList[4, i] == null) dfList[4, i] = ""; strDt[0] = dfList[2, i].Replace("\t", " "); strDt[1] = dfList[4, i].Replace("\t", " "); // 差分リスト設定(表示データ設定) String[] dsp = new String[7]; dsp[1] = "" + i; dsp[2] = dfList[0, i]; dsp[3] = dfList[1, i]; dsp[4] = strDt[0]; dsp[5] = strDt[1]; dsp[6] = dfList[3, i]; ListViewItem item = new ListViewItem(dsp); // 差分リスト設定(背景色変更) if (dsp[2] == "ADD") { item.BackColor = System.Drawing.Color.Pink; } else if (dsp[2] == "DEL") { item.BackColor = System.Drawing.Color.LightGray; } else if (dsp[2] == "UPD") { item.BackColor = System.Drawing.Color.Cyan; } else { item.BackColor = System.Drawing.Color.White; } // 差分リスト設定(行追加) ListView1.Items.Add(item); } } // テキストファイル読込 private String TextRead(String fpath ) { String TextRd = ""; System.IO.Stream sr = null; System.IO.BinaryReader br = null; try { // テキストをバイト配列で読込 sr = System.IO.File.Open(fpath, System.IO.FileMode.Open, System.IO.FileAccess.Read); br = new System.IO.BinaryReader(sr); byte[] bytCode = new byte[sr.Length]; br.Read(bytCode, 0, bytCode.Length); // 文字コード判定(blnBin=バイナリ判定有り) String codeName; codeName = objDiff.GetCodeName(ref bytCode, /*blnBin:=*/true); // 文字コード変換 switch( codeName) { case "SJIS": TextRd = objDiff.SJIS_To_VbUnicode(ref bytCode); break; case "JIS": TextRd = objDiff.JIS_To_VbUnicode(ref bytCode); break; case "EUC": TextRd = objDiff.EUC_To_VbUnicode(ref bytCode); break; case "UNICODE": TextRd = objDiff.UNICODE_To_VbUnicode(ref bytCode); break; case "UTF7": TextRd = objDiff.UTF7_To_VbUnicode(ref bytCode); break; case "UTF8": TextRd = objDiff.UTF8_To_VbUnicode(ref bytCode); break; case "BIN": TextRd = objDiff.SJIS_To_VbUnicode(ref bytCode); break; default: TextRd = objDiff.SJIS_To_VbUnicode(ref bytCode); break; } return TextRd; } catch(Exception ex) { throw ex; } finally { if (br != null) br.Close(); if (sr != null) sr.Close(); } } // 差分リスト初期化 private void ListInit() { ListView1.Items.Clear(); ListView1.FullRowSelect = true; ListView1.GridLines = true; ListView1.View = View.Details; ColumnHeader columnDmy = new ColumnHeader(); ColumnHeader columnNo0 = new ColumnHeader(); ColumnHeader columnTyp = new ColumnHeader(); ColumnHeader columnNo1 = new ColumnHeader(); ColumnHeader columnFl1 = new ColumnHeader(); ColumnHeader columnFl2 = new ColumnHeader(); ColumnHeader columnNo2 = new ColumnHeader(); columnDmy.Width = 0; columnNo0.Text = "No."; columnNo0.Width = 45; columnTyp.Text = "状態"; columnTyp.Width = 45; columnNo1.Text = "行No."; columnNo1.Width = 45; columnFl1.Text = "ファイル1"; columnFl1.Width = 265; columnFl2.Text = "ファイル2"; columnFl2.Width = 265; columnNo2.Text = "行No."; columnNo2.Width = 45; ColumnHeader[] colHeaderRegValue = {columnDmy, columnNo0, columnTyp, columnNo1, columnFl1, columnFl2, columnNo2}; ListView1.Columns.AddRange(colHeaderRegValue); } } } <使用例(VBS)> ' ------------------------------------------------ ' 事前にNonDiffVb6.dllをレジストリ登録してください ' レジストリ登録方法:regsvr32 NonDiffVb6.dll ' ------------------------------------------------ ' テキスト差分オブジェクト定義 Private objDiff ' テキスト差分解析AP呼び出し DiffTest MsgBox "終了" ' テキスト差分解析AP Private Sub DiffTest() ' NonDiffVb6.dllのオブジェクト生成 Set objDiff = CreateObject("NonDiffVb6.NonDiffClassV") ' テキストファイル入力 strDt1 = TextRead("TestUtf8.txt") strDt0 = TextRead("TestSJIS.txt") ' テキスト差分解析 blnNoSp = False ' 空白文字を比較しない時True dfList = objDiff.NonDiff(strDt0, strDt1, blnNoSp, 1, 0, 1, "file0", "file1") ' 差分解析結果出力 DiffWrite "DiffOut.csv", dfList End Sub ' テキストファイル入力 Private Function TextRead(ByVal fpath) ' テキストをバイト配列で読込 Set objADOS = CreateObject("ADODB.Stream") objADOS.Type = 1 objADOS.Open objADOS.LoadFromFile fpath objADOS.Position = 0 bytCode = objADOS.Read() objADOS.Close ' 文字コード判定(blnBin=バイナリ判定有り) blnBin = True Dim codeName codeName = objDiff.GetCodeName(bytCode, blnBin) ' 文字コード変換 Select Case codeName Case "SJIS" TextRead = objDiff.SJIS_To_VbUnicode(bytCode) Case "JIS" TextRead = objDiff.JIS_To_VbUnicode(bytCode) Case "EUC" TextRead = objDiff.EUC_To_VbUnicode(bytCode) Case "UNICODE" TextRead = objDiff.UNICODE_To_VbUnicode(bytCode) Case "UTF7" TextRead = objDiff.UTF7_To_VbUnicode(bytCode) Case "UTF8" TextRead = objDiff.UTF8_To_VbUnicode(bytCode) Case "BIN" TextRead = objDiff.SJIS_To_VbUnicode(bytCode) Case Else TextRead = objDiff.SJIS_To_VbUnicode(bytCode) End Select End Function ' 差分解析結果出力 Private Sub DiffWrite(ByVal fpath, ByVal dfList) Set fso = CreateObject("Scripting.FileSystemObject") Set txf = fso.CreateTextFile(fpath, True) For i = 1 To UBound(dfList, 2) txf.WriteLine dfList(0, i) & "," & _ dfList(1, i) & "," & dfList(2, i) & "," & _ dfList(3, i) & "," & dfList(4, i) Next txf.Close End Sub <仕様(引数)の詳細説明> 1.クラス.メソッド名(関数名) NonDiffVb6.NonDiffClass.NonDiff NonDiffNet.NonDiffClass.NonDiff 2.NonDiffの実態のソースコード(一部抜粋) NonDiffはNonSoftで公開されているサンプルソース をDLL化したものです。 ※「2つのテキストファイルの差分を解析するサンプル」も参照ください。 3.引数の概要説明 strData0 : 変更前テキストデータ strData1 : 変更後テキストデータ blnNoSp : 空白文字を比較しない(True/False) p1 : 精度微調整パラメータ(一致判定行数) : 1から10ぐらいの値を指定 p2 : 精度微調整パラメータ(一致判定文字数) : 1から20ぐらいの値を指定 p3 : 精度微調整パラメータ(一致行解析数) : 1から 5ぐらいの値を指定 file0 : 変更前テキストファイル(file0PATH) : 未使用 file1 : 変更後テキストファイル(file1PATH) : 未使用 4.引数の詳細説明 blnNoSp : 空白文字を比較しない 空白文字の種類や数が違っても空白以外の文字が同じであれば、 差分と判断する必要がない場合はTrueを指定してください。 p1 : 一致判定行数 テキストファイルの一致行を見つけるにあたり、 何行一致する必要があるかを示す値で、 差分の精度を調整するための引数です。 2以上がおすすめです。 p2 : 一致判定文字数 テキストファイルの一致行を見つけるにあたり、 何文字一致する必要があるかを示す値で、 差分の精度を調整するための引数です。 あまり効果が無いと思うので1を指定してください。 p3 : 一致行解析数 より良い差分結果を出力するために、 どれぐらいの解析をするかを示す引数です。 あまり効果が無いと思うので1を指定してください。 |