Visual Basic - 未将对象引用设置为对象的实例 [英] Visual Basic - Object reference not set to an instance of an object

查看:35
本文介绍了Visual Basic - 未将对象引用设置为对象的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 VB.Net 中收到以下错误.

I'm receiving the following error in VB.Net.

未将对象引用设置为对象的实例"

"Object reference not set to an instance of an object"

它突出显示 For 循环末尾的Next".

It highlights "Next" at the end of the For Loop.

任何帮助都会很棒.

Imports System.IO
Public Class LoginForm
    Dim Username() As String
    Dim Password() As String
    Dim Index As Integer

    Public Function encrypt(ByVal data As String) As String
        Dim answer As String = ""
        Dim I As Integer
        data = RTrim(data)
        If Mid(data, 1, 1) <> Chr(0) Then
            For I = 1 To Len(data)
                answer = answer + Chr(Asc(Mid(data, I, 1)) Xor 23) 
               ' Xor 23 is a simple encription cipher, a string can be 
               ' encrypted or de-encrypted by the value following the Xor 
               'i.e. "23" '
            Next I
        End If
        encrypt = answer
    End Function

    Private Sub LoginButton_Click(ByVal sender As System.Object, _
                                    ByVal e As System.EventArgs) _
                                Handles LoginButton.Click

        For Each I In Username

            If UserNameTextBox.Text = Username(Index) Then
                UserAdd.Show()
                Me.Hide()
                If PasswordTextBox.Text = Password(Index) Then
                    MessageBox.Show("Correct Password")
                Else
                    MessageBox.Show("Invalid Password, Sorry")
                End If
            Else : MessageBox.Show("Invalid Username, Sorry")
            End If    
        Next    
    End Sub

    Public Sub ReadUsers()
        Dim CurrentFileReader As StreamReader
        Dim FileName, Line As String
        Dim Delimiter As Char = ","
        Dim Feild() As String
        Dim Username() As String
        Dim Password() As String
        Dim Index As Integer

        FileName = "C:\Computing\Projects\Login\Users.txt"  'location of 
                                                            'user file 
        CurrentFileReader = New StreamReader(FileName)

        Do Until CurrentFileReader.EndOfStream

            Line = CurrentFileReader.ReadLine
            If Line = Nothing Then
                Exit Do
            End If

            ReDim Preserve Username(Index)
            ReDim Preserve Password(Index)

            Feild = Line.Split(Delimiter)

            Username(Index) = encrypt(Feild(0))
            Password(Index) = encrypt(Feild(1))        
        Loop
    End Sub        

    Private Sub LoginForm_Load(ByVal sender As Object, _
                                ByVal e As System.EventArgs) _
                            Handles Me.Load
        Call ReadUsers()
    End Sub
End Class

推荐答案

尝试替换此代码:

For Each I In Username 

            If UserNameTextBox.Text = Username(Index) Then 
                UserAdd.Show() 
                Me.Hide() 
                If PasswordTextBox.Text = Password(Index) Then 
                    MessageBox.Show("Correct Password") 
                Else 
                    MessageBox.Show("Invalid Password, Sorry") 
                End If 
            Else : MessageBox.Show("Invalid Username, Sorry") 
            End If 

Next 

使用此代码:

For Each I In Username 

      if Username(i) is not null then

            If UserNameTextBox.Text = Username(Index) Then 
                UserAdd.Show() 
                Me.Hide() 
                If PasswordTextBox.Text = Password(Index) Then 
                    MessageBox.Show("Correct Password") 
                Else 
                    MessageBox.Show("Invalid Password, Sorry") 
                End If 
            Else : MessageBox.Show("Invalid Username, Sorry") 
            End If 
      else
            ....handle empty string
      end if

        Next 

这篇关于Visual Basic - 未将对象引用设置为对象的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆