Avatar billede the_party_dog Nybegynder
11. august 2004 - 10:45 Der er 28 kommentarer og
2 løsninger

Outside The Bounds

Jeg sidder og prøver for første gang at få styr på lidt array håndtering, men får en grum fejl.

Index was outside the bounds of the array.

string [,] Programs = new string[10,1];
            Programs[0,0] = "";
            Programs[1,0] = "";
            Programs[2,0] = "";
            Programs[3,0] = "";
            Programs[4,0] = "";
            Programs[5,0] = "";
            Programs[6,0] = "";
            Programs[7,0] = "";
            Programs[8,0] = "";
            Programs[9,0] = "";

while(Exit != "YES")
                            {
                                string ReadArray = Programs[i,0].ToString();

                                if(Pcount == 0)
                                {
                                    Programs[0,0] = Application;
                                    Pcount = 1;
                                    Lcount[0,0] = 1;
                                    Exit = "YES";
                                }
                               
                                else if(ReadArray.Equals(Application))
                                {
                                    Lcount[i,0] = Lcount[i,0] + 1;
                                    Exit = "YES";
                                }    if(i == 9)
                                {
                                    Programs[Pcount,0] = Application;
                                    Lcount[Pcount,0] = 1;
                                    Pcount = Pcount + 1;
                                    Exit = "YES";
                                }
                                                               
                                i = i + 1;
                            }

Det her er et udsnit af min kode, det er som om at den ikke kan håndtere at jeg bruger i til at definere hvilket array område jeg vil kigge på. Det er i sætningen: "string ReadArray = Programs[i,0].ToString();"

Nogen som har et eller andet godt forslag til hvad der skaber min fejl?
Avatar billede arne_v Ekspert
11. august 2004 - 10:48 #1
Hvilken værdi har i ?

Hvis den er < 0 eller > 9, så ...
Avatar billede the_party_dog Nybegynder
11. august 2004 - 10:49 #2
i = 0

Det er sat i starten af koden, som desværre ikke lige er kommet med, sorry...
Avatar billede arne_v Ekspert
11. august 2004 - 10:52 #3
Og den bliver ikke talt op til > 9 i den while løkke ?
Avatar billede the_party_dog Nybegynder
11. august 2004 - 10:58 #4
Det burde den jo i teorien blive.... Men den fejler ved "ReadArray = Programs[i,0].ToString();

Har lagt den op tidligere i programmet, så den ikke laver en ny en hver gang løkken kører :)
Avatar billede arne_v Ekspert
11. august 2004 - 11:27 #5
Jo men i bliver jo talt op for hvert gennemløb af while løkken.

Hvis den bliver > 9 så skal du jo få den fejl du får.
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:02 #6
Den skulle meget gerne ikke blive højere end 9, fordi jeg har en IF sætning som fanger den ved 9, og som laver et exit ud af løkken.
Avatar billede arne_v Ekspert
11. august 2004 - 12:20 #7
Hm.

Og du er helt sikker på at det er den linie som det går galt i ?
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:28 #8
Det er den linje som IE skriver til mig når jeg builder mit projekt...
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:29 #9
og trykker på min knap, som affyrer den skrevne kode...
Avatar billede arne_v Ekspert
11. august 2004 - 12:36 #10
Prøv og udskriv i lige før den linie og noget andet lige efter den linie for at verificere
hvad der sker.
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:39 #11
Linjen ændre position, og fejlen henviser stadigvæk til linjen med: "ReadArray = Programs[i,0].ToString();"
Avatar billede arne_v Ekspert
11. august 2004 - 12:42 #12
Og hvad er i når det går galt ?

Og linien neden under bliver ikke skrevet ud ?
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:47 #13
skal jeg smide et break ind for at se hvad i er lige med??
Avatar billede arne_v Ekspert
11. august 2004 - 12:49 #14
Det kan du godt.

Men jeg tænkte nu mere på Console.WriteLine eller MessageBox.Show !
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:53 #15
Det er en web applikation jeg sidder og arbejder med, så bliver det ikke lidt svært at lave WriteLine eller MessageBox?
Avatar billede arne_v Ekspert
11. august 2004 - 12:54 #16
Jep. Men så kunne du vel bare outputte det til browseren.
Avatar billede the_party_dog Nybegynder
11. august 2004 - 12:55 #17
:) Så må jeg bede dig om at forklare hvor jeg gør det, er ikke lige den vilde haj til det her :) Sorry...
Avatar billede arne_v Ekspert
11. august 2004 - 13:12 #18
Det har jeg lidt svært ved uden at kende konteksten den kode udføres i.

Men altså hvis du kan debugge dig gennem kode og sætte break, så bør det også
være OK.
Avatar billede guidmaster Nybegynder
11. august 2004 - 13:18 #19
Du kan du skrive igennem trace objektet. Husk at enable trace i dit page direktiv. Når du har gjort det kan du i din løkke skrive følgenden:
Trace.Write("i er: " + i.ToString())
Avatar billede the_party_dog Nybegynder
11. august 2004 - 13:21 #20
Øhh... Jeg er sgu helt på herrens marks omkring det her breakpoint, troede det var lidt nemmere at gå til.. :(

Jeg har sat en rød prik til venstre for min kode, ved en linje før den kode som crasher. Men den stopper ikke der, og jeg kan ikke forstå de muligheder der er....
Avatar billede _et Praktikant
11. august 2004 - 16:24 #21
Jeg tror du tæller for langt.

Prøv at skrie dette :
Debug.Write(i.ToString());

Før denne linje:
string ReadArray = Programs[i,0].ToString();

Så får du udskrevet værdien af i ligefør programmet stopper.

Ps. du skal lige huske at tilføje dette i toppen, for at kunne bruge Debug.

using System.Diagnostics;
Avatar billede the_party_dog Nybegynder
12. august 2004 - 06:02 #22
_Et> Du havde ret, havde selv lige tænkt på det samme, grunden til jeg talte for langt var fordi jeg er inde en løkke som læser en tekst fil, så næste gang den yderste løkke kørte, var i oppe på 10, og så crashede den.

Iden fik jeg på vej til arbejde kl 5.00 her til morges, utroligt hvad man ikke kan finde ud af på en øde landevej. :)
Avatar billede arne_v Ekspert
12. august 2004 - 13:53 #23
Nu er vi vel 3 mand som har brugt ca. 15 indlæg på at forklare at det nødvendigvis
måtte være den i som enten var < 0 eller > 9.
Avatar billede _et Praktikant
12. august 2004 - 15:30 #24
arne v -> Det er med at have ordet i sin magt :-)

Jeg tror måske ikke helt party dog fik fat i hvad du mente.
Avatar billede the_party_dog Nybegynder
13. august 2004 - 08:06 #25
arne_v> Jeg er ked af at jeg har misforstået dig fra starten af, men har måske ikke samme logiske sans som jer andre til at se de "indlysende" fejl. Det er jo derfor man skriver i dette forum af kloge folk. :)

Smid begge et svar, så fordeler jeg pointene...

et_> Hvordan ser det ud, vil du kunne leve med at få 20 points? Så får arne_v 40 for alt hans tid, og fordi jeg ikke fattede et hint da han skrev det til at starte med... :)
Avatar billede _et Praktikant
13. august 2004 - 17:26 #26
Det gør du bare som du vil :-)
Avatar billede arne_v Ekspert
13. august 2004 - 17:38 #27
Hvis det er et's forklaring som hjalp dig så er det helt fair at du giver ham flest
eller sågar alle points.
Avatar billede arne_v Ekspert
13. august 2004 - 17:39 #28
og et svar
Avatar billede arne_v Ekspert
13. august 2004 - 17:40 #29
Min bemærkning var mere for at guidmaster og mig ikke skulle fremstå
som totale idioter for eftertiden.
Avatar billede arne_v Ekspert
22. august 2004 - 11:56 #30
party>

Tid at få afsluttet spørsgmålet ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester