locked
Se ha detectado código inaccesible RRS feed

  • Pregunta

  • Agradezco de ante mano si alguien me puede orientar

    Porque no veo dónde está el Problema:

                public int A6_Busca_Fi(DataGridView Dgv, int NumCol, string QueBusca, bool XySet = false)
                {
                    int C = Dgv.ColumnCount - 1;
                    int R = Dgv.Rows.Count - 1;

                    for(int i = 0; i <= R; i++) //En i++ acusa la advertencia

                    {
                        if(QueBusca == Convert.ToString(Dgv[NumCol, i].Value))
                        {
                            if(XySet)
                            {
                                if(Dgv.Columns[NumCol].Visible == false)
                                {
                                    for(int j = NumCol + 1; j <= C; j++)
                                    {
                                        if(Dgv.Columns[j].Visible == true)
                                        {
                                            NumCol = j;
                                            break;
                                        }
                                    }
                                }
                            }
                            Dgv.CurrentCell = Dgv[NumCol, i];
                            Dgv.FirstDisplayedScrollingRowIndex = i;
                        }
                        return i;

                    }
                    return -1;

                }


    Atentamente [Best Regards] [Amicalement] Ivan Pequeño Andrade

    martes, 5 de mayo de 2020 13:41

Respuestas

  • Hola Ivan,

    mira, revisando el código me di cuenta de esto

     for(int i = 0; i <= R; i++) //En i++ acusa la advertencia
                    {
                        if(QueBusca == Convert.ToString(Dgv[NumCol, i].Value))
                        {
                            if(XySet)
                            {
                                if(Dgv.Columns[NumCol].Visible == false)
                                {
                                    for(int j = NumCol + 1; j <= C; j++)
                                    {
                                        if(Dgv.Columns[j].Visible == true)
                                        {
                                            NumCol = j;
                                            break;
                                        }
                                    }
                                }
                            }
                            Dgv.CurrentCell = Dgv[NumCol, i];
                            Dgv.FirstDisplayedScrollingRowIndex = i;
                        }//FIN PRIMER IF
                        return i;
    
                    }

    independientemente que el primer IF se ejecute o no, siempre va a retornar i, es decir, retornará i = 0, es por eso que el código inaccesible alega en I++, ya que nunca se hará el i++.

    El return debe ir dentro de una validación o fuera de ese lugar...ese es el problema.

    podría ir por ejemplo, donde tienes el break, en vez de romper el ciclo, retornas la variable.

    Saludos



    martes, 5 de mayo de 2020 13:50

Todas las respuestas

  • Hola Ivan,

    mira, revisando el código me di cuenta de esto

     for(int i = 0; i <= R; i++) //En i++ acusa la advertencia
                    {
                        if(QueBusca == Convert.ToString(Dgv[NumCol, i].Value))
                        {
                            if(XySet)
                            {
                                if(Dgv.Columns[NumCol].Visible == false)
                                {
                                    for(int j = NumCol + 1; j <= C; j++)
                                    {
                                        if(Dgv.Columns[j].Visible == true)
                                        {
                                            NumCol = j;
                                            break;
                                        }
                                    }
                                }
                            }
                            Dgv.CurrentCell = Dgv[NumCol, i];
                            Dgv.FirstDisplayedScrollingRowIndex = i;
                        }//FIN PRIMER IF
                        return i;
    
                    }

    independientemente que el primer IF se ejecute o no, siempre va a retornar i, es decir, retornará i = 0, es por eso que el código inaccesible alega en I++, ya que nunca se hará el i++.

    El return debe ir dentro de una validación o fuera de ese lugar...ese es el problema.

    podría ir por ejemplo, donde tienes el break, en vez de romper el ciclo, retornas la variable.

    Saludos



    martes, 5 de mayo de 2020 13:50
  • Enrique,

    Muchas gracias por tu tiempo...

    Hay que reconocer en mi descargo e ignorancia,

    que la "fallita" estaba bien escondida...

    Gracias nuevamente


    Atentamente [Best Regards] [Amicalement] Ivan Pequeño Andrade

    martes, 5 de mayo de 2020 16:39
  • Ivan, 

    que bueno que te haya servido. Estaba bien escondida la cosa....

    Saludos.

    martes, 5 de mayo de 2020 16:41
  • Hola! Me alegra mucho ver que encontraron la respuesta, cualquier otra consulta los invito cordialmente a abrir un nuevo hilo. Procedo a cerrar este.

    Siempre es un placer atender sus consultas!
    Gracias por usar los foros de MSDN.

    Luis Diego Mora
    _______
    martes, 5 de mayo de 2020 17:06
    Moderador