VB - Индекс за пределами границ?
О, боже, я ненавижу эту штуку, я пробовал миллионы способов, но не мог найти рабочий. Позволь мне объяснить:
Я тестирую каждую строку и проверяю, что первое слово будет "копировать" в порядке? После копирования слова я хочу посмотреть, будет ли следующее слово "1", третье - "<", а последнее - ">", если все эти условия заполнены, текст между "<" и ">" должен сохраняться в переменной "copy1" (даже если между ними имеется более одного слова).
Что такое мой код:
For i = 0 To lstCode.Items.Count - 1
Dim str As String = lstCode.Items.Item(i)
Dim strA() As String = Split(str)
Dim copy1 as string
Dim copy2 as string
Select Case strA(0)
Case copy
If strA(1) = "1" And strA(2) = "<" And strA(strA.Count - 1) = ">" Then
copy1 = ""
For lr As Integer = 3 To strA.Count - 2
copy1 &= (strA(lr) & " ")
Next
End if
End select
И, когда я отлаживаю его, я получаю сообщение об ошибке: Индекс находился за пределами массива... Кто-нибудь есть идея?
Есть что-то важное, что я забыл добавить, это целый код:
Case "copy"
If strA(1) = "1" And strA(2) = "<" And strA(strA.Count - 1) = ">" Then
copy1 = ""
For lr As Integer = 3 To strA.Count - 2
copy1 &= (strA(lr) & " ")
Next
ElseIf strA(1) = "2" And strA(2) = "<" And strA(strA.Count - 1) = ">" Then
copy2 = ""
For lrs As Integer = 3 To strA.Count - 2
copy2 &= (strA(lrs) & " ")
Next
ElseIf strA(1) = "run" Then
Try
IO.File.Copy(copy1, copy2)
Catch ex As IO.IOException
End Try
End If
End Select
Итак, все работает как прелесть: copy 1 <c:\csb.log>, copy 2 <c:\blabla.txt>, но когда приходит инструкция "run run", она дает мне ошибку...
Вам нужно сменить оператора And с AndAlso.
Второе относится к оценке короткого замыкания к вашему выражению, то есть если первое выражение ложно, то второе, третье и т.д. Выражения в одной строке не оцениваются.
В вашей линии
If strA(1) = "1" And strA(2) = "<" And .......
когда значение "Выполнить", вы все равно оцениваете выражение strA(2) = "<"
но в индексе 2 нет элемента, чтобы вы получили ошибку.
Связанные вопросы
Похожие вопросы
Посмотрите другие вопросы по меткам indexoutofboundsexception vb.net или Задайте вопрос