SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: salva04@telefonica.net en Jueves 14 de Junio de 2012, 13:27

Título: ArgumentOutOfRangeException
Publicado 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??
Título: Re:ArgumentOutOfRangeException
Publicado por: gabio2 en Jueves 14 de Junio de 2012, 15:14
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!
Título: Re:ArgumentOutOfRangeException
Publicado por: salva04@telefonica.net en Jueves 14 de Junio de 2012, 16:06
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.
Título: Re:ArgumentOutOfRangeException
Publicado por: salva04@telefonica.net en Jueves 14 de Junio de 2012, 16:09
el if es para que me compare 2 valores que tengo cargados dentro de un datagridview, y no se si se hace asi.
Título: Re:ArgumentOutOfRangeException
Publicado por: ProfesorX en Jueves 14 de Junio de 2012, 17:33
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 :)
Título: Re:ArgumentOutOfRangeException
Publicado por: salva04@telefonica.net en Jueves 14 de Junio de 2012, 19:51
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;
        }
Título: Re:ArgumentOutOfRangeException
Publicado por: gabio2 en Jueves 14 de Junio de 2012, 20:22
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.
Título: Re:ArgumentOutOfRangeException
Publicado por: salva04@telefonica.net en Lunes 18 de Junio de 2012, 16:03
gracias ya he conseguido arreglarlo

un saludo