- PR -

VisualBasicからWinDiff

1
投稿者投稿内容
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2006-03-03 16:34
いつもお世話になっております。
Windiffに関して質問させて下さい。

VisualBasic(Versionは6.0)からWindiffを実行させて、ファイルの内容が同じかどうか
を確認したいのですが、コードの記載方がいまいち分かりません。Webでも調べてみた
のですが。

少し試してみたのは、以下のコードです。
Set wshell = CreateObject("WScript.Shell")
aaa = wshell.run("Windiff C:\test\a1.txt C:\test\ex_test\a2.txt -S C:\test\c.txt")

wshell.run以降のコードの書き方で、aaaにファイル内容が同じなら0、違うなら1
を返すようなコードの記載方法はありますでしょうか?


もし、知っている方がおりましたら、アドバイスをお願いしたいです。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-03 16:55
遅延バインディング。

コード:

    Dim wShell As Object
    Set wShell = CreateObject("WScript.Shell")
    
    Dim oExec As Object
    Set oExec = wShell.Exec("%COMSPEC% /c FC C:\MosaMosaAA.txt C:\MakiMakiLove.txt")

    If oExec.ExitCode = 0 Then
        Call MsgBox("同じ")
    Else
        Call MsgBox("違う")
    End If


多分、こんな感じだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2006-03-06 09:47
じゃんぬねっとさん、アドバイスありがとうございました。

テストをおこなって問題ありませんでした。
ありがとうございました。

ちなみに、今回のファイルの比較は、HPからHTMLソースを
テキストに落として、これらのファイルを比較したかったのです。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-06 09:56
引用:

鼻セレブさんの書き込み (2006-03-06 09:47) より:

ちなみに、今回のファイルの比較は、HPからHTMLソースを
テキストに落として、これらのファイルを比較したかったのです。


でしたら、ベタにバイナリ比較しても良いかもしれませんね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2006-04-03 19:06
以前、Windiffに関しまして質問をさせて頂きましたが、再度、同じような
質問をすることをお許しください。

簡単なテストで下記のコードをVB6.0上にて記載し実行してみましたところ、
ファイルの内容が同じでも、違っても同じリターン値が帰ってきます。

どこが不具合な箇所がありましたら、ご指摘願いたいと思います。

===>Start

Sub main()

Dim wk As Boolean

wk = WinDiff("c:\windiff_test\a.txt", "c:\windiff_test\b.txt")
※a.txt、b.txt共に適当な文字などをいれました。

End Sub


Public Function WinDiff(strPreFile As String, strTodayFile As String) As Boolean

Dim wShell As Object
Dim oExec As Object

Set wShell = CreateObject("WScript.Shell")
Set oExec = wShell.Exec("%COMSPEC% /c FC strPreFile strTodayFile")

If oExec.ExitCode = 0 Then
WinDiff = True '同じ
Else
WinDiff = False '違う
End If

Set wShell = Nothing
Set oExec = Nothing

End Function

==>End

上記コードを実行しましたところ、明らかにファイルの内容が同じなのに、
falseがリターンされます。

ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-04-03 19:25
引用:
コード:
Set oExec = wShell.Exec("%COMSPEC% /c FC strPreFile strTodayFile")




これじゃ動かんでしょ。
変数は "" の外に。
それから、path とか空白が入る可能性が少しでもあるのなら、
"" で囲ってやった parameter を渡しましょう。
# 必要がなくても囲むような癖をつけることを推奨します。
1

スキルアップ/キャリアアップ(JOB@IT)