Foros del Web » Programación para mayores de 30 ;) » .NET »

"Referencia a objeto no establecida como instancia de un objeto"

Estas en el tema de "Referencia a objeto no establecida como instancia de un objeto" en el foro de .NET en Foros del Web. Buenas!! Se puede decir que estoy empezando con esto de la programación .NET y todavía hay cosas que no logro entender, como es lógico. Mi ...
  #1 (permalink)  
Antiguo 18/11/2006, 14:34
Avatar de jabi  
Fecha de Ingreso: noviembre-2006
Mensajes: 120
Antigüedad: 17 años, 6 meses
Puntos: 1
"Referencia a objeto no establecida como instancia de un objeto"

Buenas!! Se puede decir que estoy empezando con esto de la programación .NET y todavía hay cosas que no logro entender, como es lógico.

Mi problema tiene que ver con que recibo ese mensaje de error al compilar y ejecutar mi código (una aplicación de consola), exactamente la línea que me marca es la que he marcado abajo en negrita.

Se trata de un procedimiento en el que pido las 3 notas de un alumno para guardarlas en la matriz v_notas(,). La primera dimensión es para los alumnos y la segunda para las notas. La variable i está declarada a nivel de módulo y por tanto es accesible desde cualquier función o procedimiento.

A ver si alguien me puede ayudar porque he visto varios mensajes por aquí con ese mismo error pero en códigos con diferentes procedimientos, y no me entero ^^

Código:
Private Sub pedir_notas(ByVal v_notas(,) As Decimal)

        Dim nota As String
        Dim j As Integer = 0 'Índice controlador de nombre de asignatura.

        Do While j < 3 Or nota = Nothing Or Not IsNumeric(nota) Or Val(nota) < 0 Or Val(nota) > 10
            nota = InputBox("Nota de " & asignaturas(j) & ":", "Alumno " & i)
            If nota = Nothing Then
                MessageBox.Show("Introduce una nota, por favor", "Nota requerida", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            ElseIf Not IsNumeric(nota) Then
                MessageBox.Show("La nota debe ser numérica.", "Nota incorrecta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            ElseIf Val(nota) < 0 Or Val(nota) > 10 Then
                MessageBox.Show("El valor de la nota no es correcto, debe estar entre 0 y 10.", "Nota incorrecta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Else
                v_notas(i, j) = nota
                j = j + 1
            End If
        Loop

        i = i + 1 'Paso al siguiente Alumno (variable declarada a nivel de módulo)

    End Sub
Gracias de antemano
  #2 (permalink)  
Antiguo 20/11/2006, 09:10
Avatar de jabi  
Fecha de Ingreso: noviembre-2006
Mensajes: 120
Antigüedad: 17 años, 6 meses
Puntos: 1
Asunto solucionado, fallo de principiante: había declarado la matriz bidimensional en el main sin reservar espacio y sin inicializar, tal como ésto: Dim notas(,) As Decimal. Ya lo había hecho en anteriores códigos pero inicializando los valores (en la misma declaración), ahora no los tenía que inicializar y por eso metí la pata. Al final Redim Preserve... y todo ok =)

Que conste que ya me he tirado de las orejas a mi mismo para que no vuelva a pasar :P
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:42.