Object reference not set to an instance of an object.

Iniciado por jaxoR, 16 Mayo 2015, 23:03 PM

0 Miembros y 1 Visitante están viendo este tema.

jaxoR

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 (csharp) [Seleccionar]
            String line = "";
            StreamWriter writer = File.AppendText(path + "\\update.dat");
            String value = "";

            for (int rows = 0; rows < dataGridView1.Rows.Count - 1; rows++)
            {
                line = Base64Decode("BQ==") + Base64Decode("Aw==") + "1" + Base64Decode("BA==") + Base64Decode("Aw==");
                for (int col = 0; col < dataGridView1.Rows[rows].Cells.Count - 1; col++)
                {
                    line += col+1.ToString() + Base64Decode("Bg==");
                    value = dataGridView1.Rows[rows].Cells[col].Value.ToString();

                    if (value == "-")
                    {
                        line += Base64Decode("Bg==");
                    }
                    else
                    {
                        line += value + Base64Decode("Bg==");
                    }
                }

                line += Base64Decode("BA==");

                writer.WriteLine(line);


El error me lo tira acá:

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

kub0x

Cita de: jaxoR en 16 Mayo 2015, 23:03 PM
Código (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
dataGridView1.Rows[rows].Cells[col].Value;

Para ello primero comprueba si no es null.

Código (csharp) [Seleccionar]
try{
  value = dataGridView1.Rows[rows].Cells[col].Value.ToString();
} catch (Exception ex){
  MessageBox.Show(ex.message);
}


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.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate