Error con varibale

22/09/2006 - 01:37 por Carlos | Informe spam
En una funcion que recibe como parametros 4 cadenas m sale una excepcion de
referencia a un ojbeto no establecida como instancia de un objeto, pero
chechando con el depùrador la variable si tiene el valor que debe tener
cuando llega a la funcion , pero cuando hago la 1ra eferencia a ella es
cuando sale la excepcion y en lugar de salir el valor de la variable ahora
sale este mensaje: Cannot obtain value of local or argument 'materiaid' as
it is not available at this instruction pointer, possibly because it has been
optimized away.

Que significa esto, por q sale este error??

Preguntas similare

Leer las respuestas

#1 solusoft
22/09/2006 - 09:21 | Informe spam
Puede realizar aportación de código ??

saludos.
Respuesta Responder a este mensaje
#2 Carlos
23/09/2006 - 00:10 | Informe spam
Este es el code de las fanciones:

//Este el procedimento de un boton y esta en una forma
private void btnAgregar_Click(object sender, EventArgs e)
{
string strClave = null;
string profesores = string.Empty;
if ((strClave = logic.generaClaveMateria(txtBNombre.Text,
cmbBCarrera.Text)) != null)
{
txtBClave.Text = strClave;
string[] datos = new string[4];
for (int i = 0; i < chklBProfesores.CheckedItems.Count; i++)
{
if ((chklBProfesores.CheckedItems.Count - i) == 1)
{
profesores +=
((System.Data.DataRowView)chklBProfesores.CheckedItems[i]).Row["ProfesorId"].ToString();
}
else
{
profesores +=
((System.Data.DataRowView)chklBProfesores.CheckedItems[i]).Row["ProfesorId"].ToString() + ",";
}
}
datos[0]=String.Copy(strClave);
datos[1] = txtBNombre.Text;
datos[2] = cmbBCarrera.Text;
datos[3] = profesores;
//Aqui mando a allamar a la funcion nueva materia que es donde sale el error
//pero cuando regreso a esta clase con el depuradr y la callstack la
variable tiene
//el valor correcto
if (logic.nuevaMateria(datos[0], datos[1], datos[2],
datos[3]))
{
DialogResult result = MessageBox.Show("LA MATERIA SE
INSERTO CORRECTAMENTE DESEA AGREGAR OTRA MATERIA", "MATERIAS",
MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (result == DialogResult.No)
this.Dispose();
else
{
// limpia();
}
}
else
MessageBox.Show("Ya hay una carrera con esa clave",
"MATERIAS", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

}
else
MessageBox.Show("Falta algunos datos para agregar una
materia", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}




//En esta funcion m sale el error
public bool insertarMateria(string materiaid,string nombre,string
carrera,string profesor)
{//Si voy paso a paso en este linea la variable materiaid tiene el
valor correcto
//Cuando viene aqui es cuando sale el error y la variable perdio su valor :(
if (dataSet.Tables["materias"].Rows.Find(materiaid) == null)
{
DataRow cRow1 = dataSet.Tables["materias"].NewRow();
cRow1["MateriaId"] = materiaid;
cRow1["Nombre"] = nombre;
cRow1["Carrera"] = carrera;
cRow1["ProfesorId"] = profesor;


//Console.WriteLine("grupos "+grupos);
dataSet.Tables["materias"].Rows.Add(cRow1);
return true;
}
loader.updateBD();
return false;
}
Respuesta Responder a este mensaje
#3 Octavio Hernandez
24/09/2006 - 11:26 | Informe spam
Carlos,

La llamada es:

if (logic.nuevaMateria(/* etc */) ...

Pero la función se llama insertarMateria(). ¿No estarás llamando a otra en
vez de esta?
En todo caso, el código parece correcto...

Slds - Octavio



datos[0], datos[1], datos[2],
datos[3]))



"Carlos" escribió en el mensaje
news:
Este es el code de las fanciones:

//Este el procedimento de un boton y esta en una forma
private void btnAgregar_Click(object sender, EventArgs e)
{
string strClave = null;
string profesores = string.Empty;
if ((strClave = logic.generaClaveMateria(txtBNombre.Text,
cmbBCarrera.Text)) != null)
{
txtBClave.Text = strClave;
string[] datos = new string[4];
for (int i = 0; i < chklBProfesores.CheckedItems.Count;
i++)
{
if ((chklBProfesores.CheckedItems.Count - i) == 1)
{
profesores +> ((System.Data.DataRowView)chklBProfesores.CheckedItems[i]).Row["ProfesorId"].ToString();
}
else
{
profesores +> ((System.Data.DataRowView)chklBProfesores.CheckedItems[i]).Row["ProfesorId"].ToString()
+ ",";
}
}
datos[0]=String.Copy(strClave);
datos[1] = txtBNombre.Text;
datos[2] = cmbBCarrera.Text;
datos[3] = profesores;
//Aqui mando a allamar a la funcion nueva materia que es donde sale el
error
//pero cuando regreso a esta clase con el depuradr y la callstack la
variable tiene
//el valor correcto
if (logic.nuevaMateria(datos[0], datos[1], datos[2],
datos[3]))
{
DialogResult result = MessageBox.Show("LA MATERIA SE
INSERTO CORRECTAMENTE DESEA AGREGAR OTRA MATERIA", "MATERIAS",
MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (result == DialogResult.No)
this.Dispose();
else
{
// limpia();
}
}
else
MessageBox.Show("Ya hay una carrera con esa clave",
"MATERIAS", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

}
else
MessageBox.Show("Falta algunos datos para agregar una
materia", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}




//En esta funcion m sale el error
public bool insertarMateria(string materiaid,string nombre,string
carrera,string profesor)
{//Si voy paso a paso en este linea la variable materiaid tiene el
valor correcto
//Cuando viene aqui es cuando sale el error y la variable perdio su valor
:(
if (dataSet.Tables["materias"].Rows.Find(materiaid) == null)
{
DataRow cRow1 = dataSet.Tables["materias"].NewRow();
cRow1["MateriaId"] = materiaid;
cRow1["Nombre"] = nombre;
cRow1["Carrera"] = carrera;
cRow1["ProfesorId"] = profesor;


//Console.WriteLine("grupos "+grupos);
dataSet.Tables["materias"].Rows.Add(cRow1);
return true;
}
loader.updateBD();
return false;
}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida