2012-10-31 40 views
1

A weird case in if clause in Visual Basic甲怪異情況下在if語句在Visual Basic.Net

這裏我'檢查是否 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的價值的手錶, 「畑oluştuİşlemtamamlanamamıştır」

abc手錶的價值: 「Hataoluştu.İşlemtamamlanamamıştır。」

我認爲大圖應該更具說明性。

第二個嘗試用型校正

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 
+3

代碼的屏幕截圖?爲什麼不把代碼發佈爲文本,所以人們可以複製/粘貼並試用它? – Oded

+1

該圖像中的文字太小,幾乎無法閱讀。如果我們無法讀取您的代碼,您將得不到多少幫助。請實際粘貼代碼的文本和錯誤文本,並使用降價代碼格式功能。 –

+0

另外,我們需要將精確的html加載到web瀏覽器控件中。 –

回答

1

注意每個對象在右列的類型。由於abc變量的類型爲「Object」,因此=運算符正在檢查引用是否相等。由abc引用的對象可能是一個字符串,但由於該變量只是輸入爲Object,因此您可以獲得參考比較。由於這兩個對象不涉及同一塊內存,所以比較返回False。更改abc聲明是這樣的:

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

一些其他的東西去尋找:

  • 在調試/監視窗口的任何空白差異不會顯示出來,它可以裂傷顯示值你的變量適合空間。嘗試點擊放大鏡仔細觀察。
  • 我看到一些非ASCII字符。確保您使用的是完全相同的unicode代碼點,否則比較可能會失敗。
+0

我以爲相同並更改了代碼,但沒有任何更改。 – Mtok

+0

請參閱後期編輯 – Mtok

+0

呀在放大鏡我看到有在outerHtml的開始換行,但不知道該如何處理呢? – Mtok

-1

嘗試鑄造abc作爲String

dim abc as string

或...

OuterHTML = cstr(abc)

我想問題在於比較ObjectString

+0

我試過了,它不會改變。 – Mtok

1

測試兩個字符串的Len()。如果它們不同,則存在一些空白問題。

否則(或者在任何情況下找出差異的起點)按字符檢查直到找到差異。

1

嘗試規範化字符串。他們可能看起來一樣,但是有不同的Unicode表示

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

(和類型abcString其他人士指出了。看來,VB類型推理並不如C#類型推斷爲好。)