数组索引超出范围
问题描述:
索引超出了数组的范围,当尝试访问一个网站时出现错误,下面的代码中的第一行弹出错误,并且对其进行任何更改都会导致更多相同的错误下面的线条。我只是没有使用足够大的数组,或者我的代码全都心慌,所以我运行的是坏数字?数组索引超出范围
我们开始用正则表达式表达刮网页:
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++;
答
你确定parameter[0, 0]
不是null
或空,所以你为什么不检查我f parameter[2, 0]
也在那里分配?
查看变量的内容与日志文件中的断点或行一样容易。
您没有向我们展示相关的声明(以及任何中间分配)到'tmp'。几乎可以肯定这是错误的,并且是错误的根源。 – jason 2011-06-06 19:05:16
我们需要了解如何声明和填充该数组。当您溢出边界时启动故障排除已经太迟了。您需要备份并找出为什么您呼叫的维度不符合您的预期。 – 2011-06-06 19:06:20
您应该将'num2'的声明移动到您设置'ToolStripProgressBar1.Maximum'之前,因为它们看起来是相同的值。没有'tmp'声明,但我没有太多的帮助。 – 2011-06-06 19:07:44