2017-11-08 5 views
-1

모든 구문이 정확하며 코드를 실행할 때 오류가 나타나지 않지만 양식의 로그인 버튼을 클릭하면 오류가 발생합니다. 배열 때문인 것 같습니다. 다음은 아래 코드입니다. 그것을 고정시키지 않는 것이 효율적 이도록 만드는 방법을 모르겠다.텍스트 파일에서 읽는 배열을 사용할 때 양식이 정지되는 이유는 무엇입니까?

Imports System.IO 
Public Class Form3 

    Dim reader1 As System.IO.StreamReader 
    Dim classdata As Array 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     reader1 = My.Computer.FileSystem.OpenTextFileReader("C:\Users\ryanm_000\Documents\username and password.txt") 
     While reader1.EndOfStream = True 
      classdata = reader1.ReadLine.Split(",") 
      If TextBox1.Text = "admin" AndAlso TextBox2.Text = "iamtheboss" Then 
       MsgBox("Welcome Mr Khan", MsgBoxStyle.Information, "Admin") 
       Me.Hide() 
       My.Forms.Form7.Text = Now.ToString 
       My.Forms.Form7.Show() 

      ElseIf TextBox1.Text = classdata(0) AndAlso TextBox2.Text = classdata(1) Then 
       Me.Hide() 
       My.Forms.Form5.Text = Now.ToString 
       My.Forms.Form5.Show() 
       reader1.Close() 
      Else 
       MsgBox("Sorry, username or password is invalid, please try again", MsgBoxStyle.Information, "Error") 

      End If 
     End While 
    End Sub 
End Class 
+0

[질문]을 읽고 [둘러보기]를 읽어보십시오. Visual Studio에는 * debugger *라는 훌륭한 도구가 있으므로 이러한 종류의 문제를 찾아서 수정할 수 있습니다. '모든 구문이 정확하고 아무런 오류도 나타나지 않습니다. '단지 컴파일한다는 것을 의미합니다. 버그가 없다는 것을 의미하지 않습니다. – Plutonix

+1

EndOfStream = True 일 때 반복 중입니다. 그것은 불합리한 것처럼 보인다. 파일이 비어 있다면 그것은 항상 스트림의 끝이므로 영원히 반복됩니다. 파일이 비어 있지 않으면, 거짓이되고 결코 루프에 들어 가지 않습니다. (기본적으로, 내가 이것을 생각하면서 추가 한 phaon의 답변) – dwilliss

+1

문제는 확실히 배열이 아닙니다. 코드 디버깅! 메서드의 첫 번째 문에 중단 점을 설정하고 한 줄씩 실행하면 작동하지 않는 이유를 알 수 있습니다! 참조 : [디버거와 함께 코드 탐색] (https://msdn.microsoft.com/en-us/library/y740d9d3.aspx?f=255&MSPPError=-2147217396). –

답변

2

독자가 스트림의 끝에 있지 않은 상태에서 파일을 처리하려고합니다. while 상태를 While reader1.EndofStream = False으로 변경하거나 쓰기가 가능한 (더 잘) While Not reader1.EndOfStream

+0

답변에 약간의 코드를 추가 할 수 있습니까? –