Index was outside the bounds of the array.

0

Witam, modyfikuję pewien kod, wygląda on następująco:

  protected void btnShowPhoto_Click(object sender, EventArgs e)
        {
            string adresURL = @"~/Content";
            string camPath = "";
            string[] tab = new string[10];

            CheckBox[] _boxes = new CheckBox[] { this.CheckBox1, this.CheckBox2, this.CheckBox3, this.CheckBox4, this.CheckBox5, this.CheckBox6, this.CheckBox7, this.CheckBox8 };
            System.Web.UI.WebControls.Image[] _images = new System.Web.UI.WebControls.Image[] { this.Image1, this.Image2, this.Image3, this.Image4, this.Image5, this.Image6, this.Image7, this.Image8 };
            Label[] _labels = new Label[] { this.lblCameraName1, this.lblCameraName2, this.lblCameraName3, this.lblCameraName4, this.lblCameraName5, this.lblCameraName6, this.lblCameraName7, this.lblCameraName8 };
            System.Web.UI.HtmlControls.HtmlAnchor[] _linkscontrol = new System.Web.UI.HtmlControls.HtmlAnchor[] { this.imagelink1, this.imagelink2, this.imagelink3, this.imagelink4, this.imagelink5, this.imagelink6, this.imagelink7, this.imagelink8 };

            for (int i = 0; i < 8; i++)
            {
                _images[i].Visible = false;
                _labels[i].Visible = false;
                _linkscontrol[i].HRef = "";
            }

            for (int i = 0; i < 8; i++)
            {
                if (_boxes[i].Checked)
                {
                    camPath = null;
                    tab = null;

                    camPath = this.GridView2.Rows[i].Cells[0].Text; 

 tab = camPath.Split(new string[] { "Moj" }, StringSplitOptions.None);


              
                    camPath = adresURL + tab[1].Replace(@"\", "/");

                    _labels[i].Visible = true;
                    _labels[i].Text = this.GridView2.Rows[i].Cells[1].Text;

                    
                    _linkscontrol[i].HRef = camPath;

                   
                   _images[i].ImageUrl = camPath;
                   _images[i].Visible = true;
                    

                }
                else
                _images[i].Visible = false;

            }
            

        }

Otrzymuje, następujący błąd:

user image

Macie jakis pomysł? Pozdrawiam.

1

debugger do reki i zobacz przy ktorej linijce i przy ktorym obiektu petli sie wywala.

Te 8 na stale w for nie wygladaja dobrze.

1
mistiq napisał(a):

Macie jakis pomysł? Pozdrawiam.

Tak. Któryś z indeksów wyszedł poza zakres którejś tablicy. Użyj debuggera, żeby dowiedzieć się więcej.

0

Ciężko z debuggerem, gdyż działa to tylko na serwerze, na który podgrywam, a tam nie maja visuala.
U mnie, lokalnie, nie mam połączenia z bazą.

0

Co to za baza? Nie możesz jej pobrać lokalnie na swojego kompa, dla testów?
Poza tym, Visual Studio to nie jedyne IDE posiadające debugger :) Debugger można zapewne pobrać osobno (chociaż ja do tej pory korzystałem jedynie z tego dostępnego w VS), ale tutaj nie mam pewności, jak to jest z c#.

1

mozesz debugowac na odleglosc. Szukaj pod haslem Remote Debugging

1

Wykorzystaj informacje o linii ze stacktrace "Default.aspx.cs:241"

0
reptile333 napisał(a):

Wykorzystaj informacje o linii ze stacktrace "Default.aspx.cs:241"

Wskazuje właśnie na:

 string adresURL = @"~/Content";  
0

Bo zbudowane na release. Czy masz możliwość wrzucenia wersji zbudowanej w Debug?

0
Sarrus napisał(a):

Bo zbudowane na release. Czy masz możliwość wrzucenia wersji zbudowanej w Debug?

To znaczy?

0

masz dwie wersje aplikacji. Debug i Release (ustawiasz przy budowaniu aplikacji). Przewaznie jest tak ze debug ma pliki pdb i dzieki temu mozesz debugowac a Relase ich nie ma (ale mozna wymusic by dolaczyl i wtedy mozesz zrobic sobie remote debugging...)

Zakladam (oczywiscie moze byc to mylne zalozenie), ze temat troszke Cie przerasta. Wiec sadze ze najlepszym rozwiazaniem bedzie napisanie prostego Loggera. Wypisuj sobie wszystko do pliku (obieg petli, jakie sa wartosci jaka jest dlugosc etc) i pozniej sprawdz plik i bedziesz wiedziec kiedy sie wywalilo i na czym i w sumie dlaczego

0
fasadin napisał(a):

Zakladam (oczywiscie moze byc to mylne zalozenie), ze temat troszke Cie przerasta. Wiec sadze ze najlepszym rozwiazaniem bedzie napisanie prostego Loggera. Wypisuj sobie wszystko do pliku (obieg petli, jakie sa wartosci jaka jest dlugosc etc) i pozniej sprawdz plik i bedziesz wiedziec kiedy sie wywalilo i na czym i w sumie dlaczego

Tak jest.
Dzięki.

1

for (int i = 0; i < 8; i++) - co to za 8 tutaj? Po co tak? Iteruje się po długości tablicy/kolekcji, a nie po jakiejś stałej z czapy.

0

cześć. już wiem, gdzie program mi się wysypuje

            //Tworzenie Virtual Path'a
                    camPath = adresURL + tab[1].Replace(@"\", "/"); 

Czy ktoś mógłby mi przybliżyć ideę samego virtual Patha?
I może jak moglbym to naprawić.
Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1