Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   "Referencia a objeto no establecida como instancia de un objeto" (http://www.forosdelweb.com/f29/referencia-objeto-no-establecida-como-instancia-objeto-444296/)

jabi 18/11/2006 14:34

"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:si:

jabi 20/11/2006 09:10

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


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.