1

VisualBasicのif句の奇妙なケース

ここで は、 WebBrowserEx1.Document.All.Item(t).OuterHtmlがabc と等しいかどうかを確認していますが、同じであるにもかかわらず、同じものを受け入れず、ifステートメントのコードを実行しません。目の見えないのは私ですか、それともVisual Basicですか?

ビッグピック: http: //i.stack.imgur.com/hVjpH.png

編集:

For t = 1 To WebBrowserEx1.Document.All.Count
    Dim abc = "<LI style=""PADDING-BOTTOM: 2px; PADDING-TOP: 2px"">Hata oluştu. İşlem tamamlanamamıştır. "
    If WebBrowserEx1.Document.All.Item(t).OuterHtml = abc Then
                        WebBrowserEx1.Navigate("http://uyg.sgk.gov.tr/vizite/tarihGiris.do")
       loc = "giris"
       WebBrowserEx1.Update()
       yeniSayfa = True

       Exit For
     End If
Next

ウォッチ内のWebBrowserEx1.Document.All.Item(t).OuterHtmlの値:「Hataoluştu.İşlemtamamlanamamıştır。」

時計におけるabcの価値:「Hataoluştu.İşlemtamamlanamamıştır。」

私は大きな写真がより説明的であるべきだと思います。

タイプ修正で2回目の試行

For t = 1 To WebBrowserEx1.Document.All.Count
                    Dim abc As String
                    abc = "<LI style=""PADDING-BOTTOM: 2px; PADDING-TOP: 2px"">Hata oluştu. İşlem tamamlanamamıştır. "
                    If WebBrowserEx1.Document.All.Item(t).OuterHtml = abc Then
                        WebBrowserEx1.Navigate("http://uyg.sgk.gov.tr/vizite/tarihGiris.do")
                        loc = "giris"
                        WebBrowserEx1.Update()
                        yeniSayfa = True
                        Exit For
                    End If
                Next
4

4 に答える 4

1

Test the Len() of the two strings. If they're different, there's some whitespace issues.

Otherwise (or in any case to find out where the differences start) check character-by-character until you find a difference.

于 2012-11-01T13:26:37.740 に答える
1

右の列の各オブジェクトのタイプに注意してください。abc変数のタイプは「Object」であるため、オペレーターは参照が等しい=かどうかをチェックしています。abcによって参照されるオブジェクトは文字列である可能性がありますが、変数は単にオブジェクトとして入力されるだけなので、参照比較を取得します。これらの2つのオブジェクトは同じメモリブロックを参照していないため、比較では。が返されます。宣言を次のように変更します。Falseabc

Dim abc As String = "<LI ... "

探すべき他のいくつかの事柄:

  • 空白の違いはデバッグ/監視ウィンドウに表示されません。これにより、変数の表示値がスペースに収まるようにマングルされる可能性があります。拡大鏡をクリックして、詳細を確認してください。
  • 非ASCII文字がいくつか表示されます。まったく同じユニコードコードポイントを使用していることを確認してください。使用していないと、比較が失敗する可能性があります。
于 2012-10-31T13:30:59.057 に答える
1

文字列を正規化してみてください。それらは同じように見えるかもしれませんが、異なるUnicode表現を持っています

If WebBrowserEx1.Document.All.Item(t).OuterHtml.Normalize() = abc.Normalize() Then
    ...
End If

(そしてabcString他の人がすでに指摘しているように型。VB型推論はC#型推論ほど良くないようです。)

于 2012-11-01T13:39:29.157 に答える
-1

としてキャストabcしてみてくださいString

dim abc as string

また ...

OuterHTML = cstr(abc)

Object問題はとの比較にあると思いますString

于 2012-10-31T13:32:08.073 に答える