Entwickler-Ecke

WinForms - IndexOutOfRangeException Problem :-S


MiLaIm - Fr 08.06.07 16:03
Titel: IndexOutOfRangeException Problem :-S
Hallo erstmal,
also ich hab mit c# angefangen und hab da ein problem, und zwar:
ein kleines lotto programm hab ich gemacht, wenn ich es laufen lasse klappt alles, bis auf den Button , der die Zahlen generieren soll. (also läuft da eigentlich garnichts).

ERstmal hab ichs ohne arrays gemacht aber ich möchts mit arrays machen und deswegen bräuchte ich bisschen hilfe.
hier der SC:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
        private void btnGenerate_Click_1(object sender, EventArgs e)
        {
            int i, GesamtZahlen = 6 ;
            int[] Lotto;
            Lotto = new int[6];
           
            System.Random rand;
            rand = new System.Random();
            for (i = 0; i < GesamtZahlen; i++)
                {
                    Lotto[i] = rand.Next(49) + 1;
                
                }
            txtAnzeige.Text = Lotto[i].ToString() + " ";         
            
        }


Also, so hab ichs mir vorgestellt.
Jetzt, wenn der IndexOutOfRangeException fehler kommt, zeigts auf
txtAnzeige.Text = Lotto[i].ToString() + " ";


Also, hoffe hab euch nicht verwirrt. Danke im voraus für die Hilfe.


Christian S. - Fr 08.06.07 16:15

Hallo und :welcome:

Die Zeile steht außerhalb der Schleife. Nach Beendigung der Schleife hat i den Wert 6 und das ist dann außerhalb der Grenzen Deines Arrays.


JüTho - Fr 08.06.07 17:13

Christian hat recht.

Außerdem wird in diesem Fall nur eine Zahl, nämlich die i-te, in die TextBox aufgenommen. Ich schlage deshalb vor, was Du vermutlich wolltest:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//  Anzeige zurücksetzen
txtAnzeige.Text = "";
for (i = 0; i < GesamtZahlen; i++)
{
    Lotto[i] = rand.Next(49) + 1;                
    //  Anzeige ergänzen - schlechte Methode:
    //  txtAnzeige.Text += Lotto[i].ToString() + " ";         
    //  Anzeige ergänzen - bessere Methode:
    txtAnzeige.AppendText(Lotto[i].ToString() + " ");         
}

Ich warne Dich aber: String-Verknüpfung ist die schlechteste Methode und gerade mal in einer solchen Situation hinzunehmen. Grundsätzlich sind StringBuilder für die Verknüpfung von Strings zu verwenden; und für TextBoxen gibt es eben AppendText().

Gruß Jürgen


MiLaIm - Fr 08.06.07 20:13

Hallo Jürgen, hallo Christian.

Ich bedanke mich seeeeeeeeeeeeehr bei euch.
Ihr habt mir echt sehr geholfen :-)

Das freut mich, echt. ich hab mir so den kopf drüber gemacht. hehe

Ihr seit ja echt cool

Respecttt