Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: jaxoR en 16 Mayo 2015, 23:03 pm



Título: Object reference not set to an instance of an object.
Publicado por: jaxoR en 16 Mayo 2015, 23:03 pm
Bueno, tengo un datagridview, y lo quiero recorrer para pasar todo a un archivo .dat.

El problema llega cuando aprieto el boton para pasarlo todo, y me sale este error:

"Object reference not set to an instance of an object."

Busque info en internet para resolverlo, pero no encontre mucho. Alguien sabe como resolverlo?

Código
  1.            String line = "";
  2.            StreamWriter writer = File.AppendText(path + "\\update.dat");
  3.            String value = "";
  4.  
  5.            for (int rows = 0; rows < dataGridView1.Rows.Count - 1; rows++)
  6.            {
  7.                line = Base64Decode("BQ==") + Base64Decode("Aw==") + "1" + Base64Decode("BA==") + Base64Decode("Aw==");
  8.                for (int col = 0; col < dataGridView1.Rows[rows].Cells.Count - 1; col++)
  9.                {
  10.                    line += col+1.ToString() + Base64Decode("Bg==");
  11.                    value = dataGridView1.Rows[rows].Cells[col].Value.ToString();
  12.  
  13.                    if (value == "-")
  14.                    {
  15.                        line += Base64Decode("Bg==");
  16.                    }
  17.                    else
  18.                    {
  19.                        line += value + Base64Decode("Bg==");
  20.                    }
  21.                }
  22.  
  23.                line += Base64Decode("BA==");
  24.  
  25.                writer.WriteLine(line);

El error me lo tira acá:

Código
  1. value = dataGridView1.Rows[rows].Cells[col].Value.ToString();


Título: Re: Object reference not set to an instance of an object.
Publicado por: kub0x en 17 Mayo 2015, 00:25 am
Código
  1. value = dataGridView1.Rows[rows].Cells[col].Value.ToString();

Es un error que se da al intentar asignar una referencia de un objeto inexistente a un objeto.

Quiero decir que .Value en algun momento será null. Esto es debido a que en esa columna no tendrás ningún tipo de dato asignado.

Código
  1. dataGridView1.Rows[rows].Cells[col].Value;

Para ello primero comprueba si no es null.

Código
  1. try{
  2.   value = dataGridView1.Rows[rows].Cells[col].Value.ToString();
  3. } catch (Exception ex){
  4.   MessageBox.Show(ex.message);
  5. }

Aunque con una sentencia condicional te valdría (If-Else). Resumiendo, llamas al .ToString() del Value en ciertos casos en el que el Value no está creado.

Saludos.