No entiendo este error VS2005

14/09/2005 - 13:55 por Ch0rY | Informe spam
Es fallo mio, o un bug?

' Me da este error y no se xq
Variable 'Claro1' is used before it has been assigned a value. A null
reference exception could result at runtime.

Dim img As New Bitmap(Me.Width, Me.Height)
Dim gr As Graphics = Graphics.FromImage(img)

Dim Blanco, Negro, Gris, Humo As Pen
Dim Claro1, Claro2, Sombra1, Sombra2 As Pen
Blanco = Pens.White
Negro = Pens.Black
Humo = Pens.WhiteSmoke
Gris = Pens.Gray

Select Case _Profundidad
Case 1
Claro1 = Humo
Sombra1 = Gris
Case 2
Claro1 = Blanco
Claro2 = Humo
Sombra1 = Negro
Sombra2 = Gris
End Select


With gr
.DrawLine(Claro1, 0, Me.Height - 1, 0, 0) <-- Linea con el error
.DrawLine(Claro1, 0, 0, Me.Width - 1, 0)
.DrawLine(Sombra1, Me.Width - 1, 1, Me.Width - 1, Me.Height - 1) <-- Linea
con el error
.DrawLine(Sombra1, Me.Width - 1, Me.Height - 1, 0, Me.Height - 1)
End With

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
14/09/2005 - 15:56 | Informe spam
Hola, Ch0ry:

Es un error o una advertencia?

Debería ser una advertencia. Simplemente porque no hay una asignación
incodicional a Claro1.

Es decir, si _Profundidad = 1 se le asigna Humo, y si es 2 se le asigna
Blanco, pero los valores en el Select Case probablemente no agotan el rango
de variación del selector.

Puedes probar con dos cosas (es lo que haría, no se si funcionara):

- Declarar Profundidad como una enumeracion y _Profundidad como instancia de
este tipo e incluir todos los valores enumerados en el Select Case.

- Si solo son dos valores posibles, recodificar el Select Case como un If
... Then ... Else.

Salud!
Respuesta Responder a este mensaje
#2 Al
14/09/2005 - 20:49 | Informe spam
El error lo da porque hay posibles "caminos" en los que claro1 no
obtendria un valor ya que simplemente declarandolo es una referencia que
no apunta a ningun sitio, una opcion seria poniendo un case else y darle
un valor generico o nothing a claro1 o bien dandole en la declaracion
por ejemplo el valor de nothing:
dim Claro1 as Pen = Nothing
Con esto claro1 ya tendria una referencia, en este caso seria a nothing,
luego no te daria error en caso de llamarlo y la advertencia se quitaria


Un saludo
Al

Ch0rY wrote:
Es fallo mio, o un bug?

' Me da este error y no se xq
Variable 'Claro1' is used before it has been assigned a value. A null
reference exception could result at runtime.

Dim img As New Bitmap(Me.Width, Me.Height)
Dim gr As Graphics = Graphics.FromImage(img)

Dim Blanco, Negro, Gris, Humo As Pen
Dim Claro1, Claro2, Sombra1, Sombra2 As Pen
Blanco = Pens.White
Negro = Pens.Black
Humo = Pens.WhiteSmoke
Gris = Pens.Gray

Select Case _Profundidad
Case 1
Claro1 = Humo
Sombra1 = Gris
Case 2
Claro1 = Blanco
Claro2 = Humo
Sombra1 = Negro
Sombra2 = Gris
End Select


With gr
.DrawLine(Claro1, 0, Me.Height - 1, 0, 0) <-- Linea con el error
.DrawLine(Claro1, 0, 0, Me.Width - 1, 0)
.DrawLine(Sombra1, Me.Width - 1, 1, Me.Width - 1, Me.Height - 1) <-- Linea
con el error
.DrawLine(Sombra1, Me.Width - 1, Me.Height - 1, 0, Me.Height - 1)
End With


Respuesta Responder a este mensaje
#3 Ch0rY
14/09/2005 - 21:37 | Informe spam
Gracias por vuestra ayuda, lo que hare sera declaralo como nothing.

Yo pensaba q eso se hacia automaticamente.

chory
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida