2011-06-06 114 views
1

索引超出了數組的範圍,當嘗試訪問一個網站時出現錯誤,下面的代碼中的第一行彈出錯誤,並且對其進行任何更改都會導致更多相同的錯誤下面的線條。我只是沒有使用足夠大的數組,或者我的代碼全都心慌,所以我運行的是壞數字?數組索引超出範圍

我們開始用正則表達式表達刮網頁:

   string[] lines = TextBox1.Lines; 
       label2.Text = "Custom URL Status: Working"; 
       this.working.Text = "Fetching Web URL(s)"; 
       try 
       { 
        WebBrowser browser = this.WebBrowser1; 
        browser.ScriptErrorsSuppressed = true; 
        for (int i = 0; i < lines.Length; i++) 
        { 
         browser.Navigate(lines[i]); 
         this.BrowserWait(this.WebBrowser1); 
         string[,] parameter = (string[,])this.preg_match(@"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}[:][0-9]{1,5})", browser.Document.Body.InnerHtml); 
         if ((parameter[0, 0] == "") | (parameter[0, 0] == null)) 
         { 
          this.t = new Thread(new ThreadStart(this.getFromSite1)); 
          this.t.Start(); 
          label2.Text = "Custom URL Status: Error"; 
          return; 
         } 
         this.t = new Thread(new ParameterizedThreadStart(this._Lambda1)); 
         this.t.Start(parameter); 
         browser = null; 
        } 
       } 

這就是所謂的:

 private void _Lambda1(object a0) 
     { 
     this.handleList((string[,])a0); 
     } 

上this.ToolStrip的第一行哪些錯誤:

 public void handleList(string[,] tmp) 
     { 
     Control.CheckForIllegalCrossThreadCalls = false; 
     this.ToolStripProgressBar1.Maximum = (int)Math.Round((double)(Convert.ToDouble(tmp[2, 0]) - 1.0)); 
     this.ToolStripProgressBar1.Minimum = 0; 
     this.ToolStripProgressBar1.Value = 0; 
     int num2 = (int)Math.Round((double)(Convert.ToDouble(tmp[2, 0]) - 1.0)); 
     for (int i = 0; i <= num2; i++) 
     { 
      this.ToolStripProgressBar1.Value = i; 
      this.proxies.Text = Convert.ToString(this.iWork) + "/" + Convert.ToString(this.iTotal); 
      this.iTotal++; 
+5

您沒有向我們展示相關的聲明(以及任何中間分配)到'tmp'。幾乎可以肯定這是錯誤的,並且是錯誤的根源。 – jason 2011-06-06 19:05:16

+0

我們需要了解如何聲明和填充該數組。當您溢出邊界時啓動故障排除已經太遲了。您需要備份並找出爲什麼您呼叫的維度不符合您的預期。 – 2011-06-06 19:06:20

+0

您應該將'num2'的聲明移動到您設置'ToolStripProgressBar1.Maximum'之前,因爲它們看起來是相同的值。沒有'tmp'聲明,但我沒有太多的幫助。 – 2011-06-06 19:07:44

回答

0

你確定parameter[0, 0]不是null或空,所以你爲什麼不檢查我f parameter[2, 0]也在那裏分配?

查看變量的內容與日誌文件中的斷點或行一樣容易。