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

Error de NullReferenceException en lectura de archivos VB.NET

Estas en el tema de Error de NullReferenceException en lectura de archivos VB.NET en el foro de .NET en Foros del Web. hola de nuevo un saludo tengo el siguiete codigo para guardar los datos de una clase en archivo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código VB.NET: Ver original Private ...
  #1 (permalink)  
Antiguo 05/04/2009, 17:16
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 4 meses
Puntos: 1
Pregunta Error de NullReferenceException en lectura de archivos VB.NET

hola de nuevo un saludo

tengo el siguiete codigo para guardar los datos de una clase en archivo

Código VB.NET:
Ver original
  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.         Dim sw = New FileStream("MyFile.txt", FileMode.CreateNew)
  3.         Dim w As New BinaryWriter(sw)
  4.         Dim tex As String
  5.  
  6.         w.Write(objeto_archivo._a)
  7.         w.Write(objeto_archivo._b)
  8.         w.Write(objeto_archivo._c)
  9.         w.Write(objeto_archivo._d.Items.Count)
  10.         For i = 0 To objeto_archivo._d.Items.Count - 1
  11.             objeto_archivo._d.SetSelected(i, True)
  12.             tex = objeto_archivo._d.SelectedItem
  13.            (objeto_archivo._d.SelectedIndex + i))
  14.             w.Write(tex)
  15.         Next
  16.         sw.Close()
  17.     End Sub
el campo _a es un entero, el _b es un string, el _c esun double y el _d es un ListBox
y guarda los items que este tenga en el archivo

---
ahora tengo es te codigo para leer desde el archivo
Código VB.NET:
Ver original
  1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  2.         ListBox1.Items.Clear()
  3.                
  4.         Dim fs = New FileStream("MyFile.txt", FileMode.Open, FileAccess.Read)
  5.         Dim r As New BinaryReader(fs)
  6.         Dim num As Integer
  7.         objeto_archivo._a = r.ReadInt32()
  8.         objeto_archivo._b = r.ReadString()
  9.         objeto_archivo._c = r.ReadDouble()
  10.         num = r.Read
  11.         For i = 0 To num - 1
  12.             objeto_archivo._d.Items.Add(r.ReadString)
  13.             ListBox1.Items.Add(r.ReadString)
  14.         Next        
  15.         r.Close()
  16.     End Sub

todo corre bien hasta cuando empieza leer los datos de la listbox y me dice:

Código:
"No se controlo NullReferenceException.

referencia a objeto no establecida como instancia de un objeto"
pero objeto_archivo esta declarado como public en el form 1
y cuadno lo voy depurando los campos _a,_b y_c se se guardadn de forma
correcta por lo que creo que es algo sobre la listbox pero no se que ayuda
  #2 (permalink)  
Antiguo 09/04/2009, 06:50
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Error de NullReferenceException en lectura de archivos VB.NET

Fijate en el código del error el número de línea que lo da.
Pero tal vez será por acá:

For i = 0 To num - 1
objeto_archivo._d.Items.Add(r.ReadString)
ListBox1.Items.Add(r.ReadString)

En algún momento le debes esta tratando de agregar un null al combo. Metele un punto de interrupción y seguile el código como va cargando el combo, a lo mejor cuando llega al último indice está vacío o algo.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #3 (permalink)  
Antiguo 10/04/2009, 11:27
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Error de NullReferenceException en lectura de archivos VB.NET

Hola gracias por responder

pedon por haberme olvidaddo de este post si efectivamente es por que el fichero se acava y r.readstring ya no sabe que cargarle a las listas
Código VB.NET:
Ver original
  1. For i = 0 To num - 1            
  2. objeto_archivo._d.Items.Add(r.ReadString)  
  3.          ListBox1.Items.Add(r.ReadString)  
  4.      Next
ahi num-1 le dice que el ciclo la va hacer un numero de veces de registros que tenga el archivo pero menos 1 por que empezamos desde cero
el problemas es que cada ves que se ejecuata el ciclo ahi dos r.readstring por lo tanto a la mitad se acava el archivo
por lo cual esto se soluciona de la siguintes formas
Código VB:
Ver original
  1. For i = 0 To (num - 1)*2    
  2.         objeto_archivo._d.Items.Add(r.ReadString)
  3.            ListBox1.Items.Add(r.ReadString)
  4.    Next


spero a alguien le pueda ayudar mi post

Saludo a Toda la Comunidad
o
Código VB:
Ver original
  1. For i = 0 To num - 1    
  2. cosa=r.ReadString
  3.        objeto_archivo._d.Items.Add(cosa)      
  4.       ListBox1.Items.Add(cosa)    
  5.     Next
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 18:15.