Индекс находился вне границ массива - PullRequest
2 голосов
/ 22 сентября 2010

Я получаю это сообщение об ошибке случайным образом:

Индекс находился за пределами массива.

И он указывает на эту строку:

Dim placename As String = RichTextBox1.Lines(0)

Ответы [ 3 ]

12 голосов
/ 22 сентября 2010

Это означает, что в вашем RichTextBox1 нет строк. Замените это на:

Dim placename As String
If RichTextBox1.Lines.Count() > 0 Then
    placename=RichTextBox1.Lines(0)
Else
    placename = String.Empty
End if

Подробнее:
Представьте массив как улицу, и каждый элемент массива - это дом. Если на улице 30 домов, и я хочу найти дом № 20, я начинаю с начала (1) и поднимаюсь до тех пор, пока не достигну 20. С массивом 0 - это то место, с которого вы начинаете вместо 1, поэтому массив с 30 элементами, содержит индексы 0-29. Теперь вернемся к аналогии с улицей. Представьте, что я иду на улицу и спрашиваю дом № 31. Этого дома не существует, потому что там всего 30 домов. Это эффективно то, что программа говорит вам. Он говорит: «В массиве недостаточно элементов, чтобы я мог найти тот, который вы просили». Итак, вы запросили элемент 0 в массиве строк, фактически говоря: «Дайте мне первую строку». Теперь, если в текстовом поле 0 строк, первая строка не существует, и вы получите эту ошибку.

1 голос
/ 22 сентября 2010

Индекс находился за пределами массива

Это сообщение об ошибке обычно означает, что вы вызвали объект в массиве в месте, которое является нулевым или в нем ничего нет. Это происходит в следующих случаях:

myArray = [0,1,2,3];

trace(myArray[6]);

Поскольку в массиве с индексом 6 ничего нет, он находится за пределами. Если во время вызова массив будет пустым, он выдаст ошибку для объекта с индексом 0.

Я не могу сказать ничего другого по количеству отправленного вами кода. Попробуйте убедиться, что массив заполнен до вызова этой строки.

0 голосов
/ 18 мая 2017

Возможно, ваш SQL Reader не получил строк, связанных с указанным вами индексом.Это был случай для меня;Я получал столбцы, которых не было в базе данных.

Вы можете изменить свой код следующим образом:

Dim placename As String
If RichTextBox1.Lines.Count > 0 Then placename = RichTextBox1.Lines(0)
...