2014-02-09 3 views
0

오 세상에 나는이 것을 싫어한다. 나는 수백만 가지의 방법을 시도했지만 작동하는 것을 찾지 못했다. 설명해 드리겠습니다.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 

그래서 모든 매력처럼 작동합니다 :


내가 추가하는 것을 잊었다 중요한 무언가가있다, 이것은 전체 코드 복사 한 < C : \ csb.log>, 복사 2 < c : \ blabla.txt>하지만 "복사 실행"문이 나올 때 오류가 발생합니다 ...

+0

Visual Basic 2010을 사용하고 있다는 것을 잊어 버렸습니다. 죄송합니다. – Bpk7

+0

어떤 줄에 오류가 있습니까? – har07

답변

1

And with AndAlso 연산자를 변경해야합니다.

두 번째 것은 표현식에 Short Circuit Evaluation을 적용합니다. 즉, 첫 번째 표현식이 거짓 인 경우 동일한 행의 두 번째, 세 번째식이 평가되지 않습니다. 값이 "실행"때 당신의 라인

If strA(1) = "1" And strA(2) = "<" And ....... 

에서

당신은 여전히 ​​식 strA(2) = "<"을 평가하지만,이 인덱스 2에서 어떤 요소가 없다 그래서 당신이 오류가 발생합니다.

+0

대단히 고맙습니다. – Bpk7

관련 문제