Diskuze: System.IndexOutOfRangeException

C# .NET .NET (C# a Visual Basic) System.IndexOutOfRangeException American English version English version

Avatar
David Frau
Člen
Avatar
David Frau:

Čau, mám menší problém... Pokaždé mi to po okamžiku od spuštění vyhodí System.IndexOu­tOfRangeExcep­tion
... Nevíte co s tím?

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ctecka1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int s = 0;
            int m = 0;
            int doba = 0;
            int rozdil = 0;
            DateTime cas = DateTime.Now;
            StreamReader sr = new StreamReader(@"mezipamet.txt");
            while (lb1.Text != "1024")
            {
                string srVystup = "d";
                string[] pole = new string[4];
                pole[0] = "0";
                pole[1] = "0";
                pole[2] = "0";
                pole[3] = "0";
                pole[4] = "0";

                if (sr.ReadLine() != null)srVystup = sr.ReadLine();
                sr.Close();
                if (srVystup != null)pole = srVystup.Split(',');
                cas = DateTime.Now;
                lb1.Text = pole[2];
                lb2.Text = pole[3];
                lb3.Text = pole[4];
                lb4.Text = pole[0] + "," + pole[1];
                lb5.Text = cas.Second + "," + cas.Millisecond;
                int.TryParse(pole[0], out s);
                int.TryParse(pole[1], out m);
                doba = cas.Millisecond - m;
                if (s != cas.Second)
                {
                    rozdil = cas.Second - s;
                }
                doba = doba + 1000 * rozdil;
                lb6.Text = "doba";

            }
        }
    }
}
 
Odpovědět 4. srpna 18:32
Avatar
gcx11
Redaktor
Avatar
Odpovídá na David Frau
gcx11:

Ahoj, řekl bych, že je problém v tomhle

string[] pole = new string[4];
                pole[0] = "0";
                pole[1] = "0";
                pole[2] = "0";
                pole[3] = "0";
                pole[4] = "0";

Jelikož sis nadeklaroval pole o velikosti 4 prvků a snažíš se přistoupit na pátý.

 
Nahoru Odpovědět  +6 4. srpna 18:36
Avatar
David Frau
Člen
Avatar
Odpovídá na gcx11
David Frau:

Aha, to bude možná tím :D
Zkusím a dám vědět.
Díky

 
Nahoru Odpovědět 5. srpna 11:45
Avatar
David Frau
Člen
Avatar
Odpovídá na David Frau
David Frau:

Tak pole jsem nastavil na velikost 5, potom mi to házelo chybu
"Ze zavřeného objektu TextReader nelze číst."
zde:

if (sr.ReadLine() != null)srVystup = sr.ReadLine();

tak jsem to změnil na

srVystup = sr.ReadLine();

a snad to běží, chyby už nejsou. :D
Díky za pomoc, myslel jsem že při deklaraci novýho pole tam píšu délku jakožto konečný index :D

 
Nahoru Odpovědět 5. srpna 11:51
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.