es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El índice estaba fuera de los límites del array. VB.NET

Mi problema

El índice estaba fuera de los límites del arreglo. Cuando intento ejecutar el código, genera este error. Tengo dos formas: INICIO DE SESIÓN y REGISTRARSE, mi problema es que no funcionan juntas y generan el error adjunto a continuación.

Dim fs As New FileStream("C:\Users\Selmen\Desktop\vb\logs.txt", FileMode.Open, FileAccess.ReadWrite)
Dim sr As New StreamReader(fs)
Dim sw As New StreamWriter(fs)
Dim s As String
Dim t() As String
Dim trouve As Integer = 0
Dim tt() As String
Dim ch As String
ch = TextBox1.Text + "#" + TextBox2.Text + "#" + TextBox3.Text + "#" + TextBox4.Text + "#" + TextBox5.Text
tt = ch.Split("#")
Do While (trouve = 0) And (sr.Peek > -1)
    s = sr.ReadLine
    t = s.Split("#")
    If String.Compare(t(2), tt(2)) = 0 Then
        trouve = 1
    End If
Loop
If (trouve = 1) Then
    MsgBox("usuario existente")
Else
sw.WriteLine(ch)

Me.Hide()
Form4.Show()

End If
sw.Close()
sr.Close()

fs.Close()

End Sub

Si obtengo:

System.IndexOutOfRangeException: El índice estuvo fuera de los límites del arreglo.
Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “El índice estaba fuera de los límites de la matriz” indica que el programa está intentando acceder a un elemento de la matriz que no existe. En este fragmento de código en particular, el error ocurre al intentar acceder al tercer elemento de la matriz “t”.

    Para corregir este error, debes asegurarte de que la matriz “t” contenga al menos tres elementos antes de intentar acceder a su tercer elemento. Una forma de hacer esto es agregar una declaración “if” para verificar la longitud de la matriz “t” antes de acceder a sus elementos:

    If t.Length >= 3 AndAlso String.Compare(t(2), tt(2)) = 0 Then
        ' código...
    End If
    

    El operador “&&” se utiliza para verificar si ambas condiciones son verdaderas. La propiedad “Length” de la matriz devuelve el número de elementos en la matriz, por lo que estamos verificando si la longitud es mayor o igual a tres antes de acceder al tercer elemento.

    Alternativamente, puedes verificar si la matriz “t” es nula o vacía antes de acceder a sus elementos:

    If t IsNot Nothing AndAlso t.Length >= 3 AndAlso String.Compare(t(2), tt(2)) = 0 Then
        ' código...
    End If
    

    La condición “IsNot Nothing” verifica si la matriz no es nula, y la condición “Length” verifica si la matriz tiene al menos tres elementos.

    Al agregar estas comprobaciones, puedes evitar que ocurra el error “El índice estaba fuera de los límites de la matriz” en tu programa.

Comments are closed.