0

テキストボックスを持つプロダクト キー システムを作成しました。アクティブにすると、アクティブなプロダクト キーを含む txt ファイルが読み込まれ、テキスト ボックスのテキストがテキスト ファイル内のアクティブなコードの 1 つと同じであることを確認します。ただし、無効なコードを入力すると、フリーズして死にます! 多分悪いコード?これが私のコードです:

    Dim code As String
    code = TextBox1.Text

    Try
        Dim sr As IO.StreamReader = New IO.StreamReader("C:\Users\Chris\test.txt")
        Dim line As String

        Do
        line = sr.ReadLine

        Loop Until line = code
        sr.Close()
        my.settings.registered=True
        MsgBox("Your code is valid")

    Catch ex As Exception
        MsgBox("You have entered an invalid code, please try again", MsgBoxStyle.Critical)



    End Try
4

2 に答える 2

1

ファイルの最後に到達したかどうかを確認していないため、アプリケーションがキャッチしていない例外をスローしている可能性があります。ストリームの最後に到達したかどうかを確認する必要があります。

Do Until sr.EndOfStream
    ....
Loop

それを修正する必要があります

注: 終了後に StreamReader オブジェクトも破棄する必要があります。ただし、これを Usingブロックでラップすることをお勧めします。そうすることを覚えておく必要はありません!

これらすべてを次のように関数にラップすることをお勧めします。

Private Function IsValidCode(ByVal code As String) As Boolean
    Dim line As String
    Using sr As New StreamReader("yourfile")
        Do Until sr.EndOfStream
            line = sr.ReadLine
            If line = code Then Return True
        Loop
    End Using
    Return False
End Function
于 2013-05-28T15:18:54.233 に答える
0

ループを変更してみてください..

Do
    line = sr.ReadLine

    if line = code then

      '.................
      exit do 

    end if

Loop Until line is Nothing
于 2013-05-28T15:29:28.883 に答える