SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: salva04@telefonica.net en Jueves 14 de Junio de 2012, 13:27
-
Hola, soy un pardillo en esto del c#, estoy haciendo un programilla y me ha salido este error 'no se controlo ArgumentOutOfRangeException'
Alguien me puede ayudar??
-
Está fuera del rango, estás trabajando con vectores?...
Puedes colocar la sección del código donde marca el error?..
Mi sugerencia, que ejecutes paso a paso tú aplicación para que te des cuenta de las instrucciones que se ejecutan..
Saludos!
-
Hola, me sale cuando empieza a leer este fragmento de codigo que tengo puesto dentro de un metodo:
double res = 0;
if (Obs[0].LHz > Obs[1].LHz)
res = Obs[0].LHz - Obs[1].LHz;
else
res = Obs[1].LHz - Obs[0].LHz;
igual esta mal hecho, pero estoy empezando a utilizar c# y a programar.
-
el if es para que me compare 2 valores que tengo cargados dentro de un datagridview, y no se si se hace asi.
-
Podrias poner la definicion de la variable Obs??
Porque asi, sin ver como defines Obs no es posible ayudarte ya que no sabemos de que tipo son los elementos de Obs, ni cuantos elementos tiene el vector Obs.
Saludos :)
-
este es mi metodo:
public cVertice EstacionAprox(cLibretaPto Pto, cLibretaObs Obs)
{
cObsTopo DrAux = new cObsTopo();//creo DrAux objeto para poder llamar a mi metodo Dr
double res = 0;
cVertice CoordAprox = new cVertice();
if (Obs[0].LHz > Obs[1].LHz)
res = Obs[0].LHz - Obs[1].LHz;//me resta dos lecturas
else
res = Obs[1].LHz - Obs[0].LHz;
double dist = Distancia(Pto[0]);//calculo la distancia entre el punto 1 y el punto 2, llamando al metodo
double Alfa = ((DrAux.Dr(Obs[0]) * DrAux.Dr(Obs[0])) + (dist * dist) - (DrAux.Dr(Obs[1]) * DrAux.Dr(Obs[1]))) / (2 * dist * DrAux.Dr(Obs[0]));
double Alfa2 = Math.Acos(Alfa) * 200 / Math.PI;//me da el angulo en cente
double Az1;
if (Pto[0].Este < Pto[1].Este)
Az1 = Azimut(Pto[0]) + Alfa2;//calculo el azimut entre el punto 1 y el punto 2, llamando al metodo, me da el azimut de A al punto estacion
else
Az1 = Azimut(Pto[0]) - Alfa2;
CoordAprox.Este = Pto[0].Este + DrAux.Dr(Obs[0]) * Math.Sin(Az1 * Math.PI / 200);//me calcula la x del pto aproximado
CoordAprox.Norte = Pto[0].Norte + DrAux.Dr(Obs[0]) * Math.Cos(Az1 * Math.PI / 200);//me calcula la y del pto aproximado
return (CoordAprox);//me devuelve las coordenadas del pto aproximado
}
Esta es la clase libreta de observaciones:
public class cLibretaObs
{
protected List<cObsTopo> LoObs = null
public cLibretaObs()//constructor de la clase libreta.
{
this.LoObs = new List<cObsTopo>();//creo una lista cobsTopo
}
public int Cantidad
{
get
{
return LoObs.Count;
}
}
public cObsTopo this[int index]
{
get
{
return (LoObs[index]);
}
}
aqui es donde me da el error al llegar a la ultima linea
y esta es mi clase observacion:
public class cObsTopo
{
public string Estacion = "";
public string PuntoVisado = "";
public double LHz = 0;
public double Dg = 0;
public double LV = 0;
/// <summary>
/// Constructor de la clase Observación
/// <summary>
public cObsTopo()
{
}
/// Constructor de la clase Observación
public cObsTopo(string Est, string PV, double Hz, double D, double V)
{
this.Estacion = Est;
this.PuntoVisado = PV;
this.LHz = Hz;
this.Dg = D;
this.LV = V;
}
-
Coloca un punto de interrupción donde te marca el error, y antes de que se ejecute la instrucción, verifica que número de Index es el que va a consultar y valida que el Index este dentro del Rango de tú lista... y ahí puede ser tú punto de partida del origen del error..
Saludos.
-
gracias ya he conseguido arreglarlo
un saludo