none
Necesito ayuda para guardar valores en arreglos

    Pregunta


  •     Dim limite As Integer
      Dim Contadorb As Integer
     Dim Valores(0 - limite) As String
      Dim AuID As String 

    Limite=442

    Do Until Contadorb = limite

                AuID = Val(Au_IDTextBox.Text)
                Contadorb = Contadorb + 1
                Valores(Contadorb) = AuID




                Me.AUTORESBindingSource.MoveNext()
            Loop
        End Sub

    Me marca que no se encontró el IndexOutOfRangeException en "Valores(contadorb)=AUID
    Se supone que va guardando el texto de cada una de las textbox que va pasando, lo hago para sacar sus claves y al final compararlas para no repetir las claves

                
    domingo, 13 de noviembre de 2016 5:37

Respuestas

  • "Darckoboy" escribió:

    > Me marca que no se encontró el IndexOutOfRangeException en "Valores(contadorb)=AUID

    Hola:

    Fíjate bien lo que está sucediendo:

    > Dim limite As Integer
    > Dim Contadorb As Integer
    > Dim Valores(0 - limite) As String

    Cuando intentas redimensionar el array Valores, el valor de la variable local 'limite' es 0, no es 442, por tanto (0 - limite) = 0, con lo que el array Valores solamente tendrá un único elemento, de ahí la excepción IndexOutOfRangeException que estás obteniendo cuando el valor de la variable Contadorb es mayor que cero.

    Intenta ejecutar el código como indico a continuación:

               ' A la vez que declaramos la variable le asignamos su valor
                Dim limite As Integer = 442
    
                ' Redimensionamos la matriz con el valor de la variable menos
                ' una unidad, ya que los índices de las matrices están en base
                ' cero.
                '
                Dim Valores(limite - 1) As String
                Dim Contadorb As Integer
                Dim AuID As String
    
                Do Until Contadorb > limite - 1
    
                    ' Como la variable AuID es del tipo String,
                    ' no es necesario utilizar la función Val, salvo
                    ' que solamente desees obtener los números que
                    ' contiene el valor del control TextBox.
                    '
                    AuID = Val(Au_IDTextBox.Text).ToString()
    
                    ' Primero asignamos el valor del elemento
                    ' actual de la matriz...
                    '
                    Valores(Contadorb) = AuID
    
                    ' ... Y después aumentamos el contador en una unidad.
                    '
                    Contadorb = Contadorb + 1
    
                    Me.AUTORESBindingSource.MoveNext()
                Loop
    

    De ésta manera no obtendrás el error "Índice fuera de los límites de la matriz". ;-)

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    domingo, 13 de noviembre de 2016 8:07
    Moderador