2013-10-27 70 views
0

我有以下代碼:爲什麼這個指數超出範圍?我該如何解決它?

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    If Not TextBox1.Text = "" Then 
    If TextBox1.Text.Contains("ping") Then 
     PingSplit = TextBox1.Text.Split(" ") 
    End If 

    Select Case True 
     Case TextBox1.Text.Contains("ping") 
     ' I get an IndexOutOfRange Exception was unhandled on below line 
     If PingSplit(0) Is Nothing Or PingSplit(1) Is Nothing Then 
      MsgBox("Invalid Ping IP!") 
     Else 
      ListBox1.Items.Add(GetPingMs(PingSplit(1))) 
      PingSplit(0) = vbNullString 
      PingSplit(1) = vbNullString 
     End If 
End Sub 

但是,我不能得到的代碼時,我只需鍵入「平」工作,「平www.google.com [1]」完美的作品,但它會不能用ping工作。我的想法是,我輸入ping「x」,代碼將ping分割並獲取地址(x),然後使用GetPingMs函數中的地址(getpingMsg(pingsplit(1)),但是我得到一個IndexOutOfRange異常。

+0

'Select Case'在這裏沒有必要。只需使用'If'。或者更好 - 如果不是TextBox1.Text.Contains(「ping」)然後返回。縮進程度更低 - 閱讀代碼更容易。 – Neolisk

回答

3

你得到一個異常,因爲你試圖去引用一個不存在的數組元素,如果你輸入的只是「ping」,那麼你的PingSplit數組只有一個元素, 0。但你要引用第二個元素:

PingSplit(1) 

您需要檢查數組的長度您嘗試引用這可能不存在元素之前這樣的事情可能工作(我的是VB有點生鏽,我不是100%肯定的s是你如何檢查長度):

If PingSplit.Length < 2 Then 
    MsgBox("Invalid Ping IP!") 
End If 

基本上,任何你要引用一個集合中的項目的時候,你應該總是做一些檢查的收集首先要確保這些項目都存在。

+0

謝謝,爲我完美解決了它。 – SCGB

相關問題