Ošetření výjimky Index mimo rozsah – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ošetření výjimky Index mimo rozsah – .NET – Fórum – Programujte.comOšetření výjimky Index mimo rozsah – .NET – Fórum – Programujte.com

 

itlady0
Newbie
16. 4. 2021   #1
-
0
-

Zdravím, 

mám v C# konzolové aplikaci založený list, do kterého načítám data z csv. Tato data pak zobrazuju v konzoli v řádkách a sloupcích. Výpis do konzole je omezen počtem řádků na 1 stranu. Např. 100 načtených záznamů zabere 4 strany, kdy jedna strana má 30 řádků (1 strana 30 řádků + 10 zbývajících na straně 4). Chci mezi stranami listovat šipkou dolů, má definovaný odchyt klávesy. Při zobrazení čtvrté (nenaplněné až do konce strany) mi to hází chybu:

System.ArgumentOutOfRangeException: Index je mimo rozsah. Index musí být nezáporný a musí být menší než velikost kolekce.

   v System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   v System.ThrowHelper.ThrowArgumentOutOfRangeException()
   v System.Collections.Generic.List`1.get_Item(Int32 index)

...

 Chyba bude někde v té for smyčce, ale nevím kde.

for (int i = start; i < start + jednaStrana; i++) { Console.WriteLine(seznamTemp[i].ToString())

class Program
{
	public static List<Obec> seznamObci = new List<Obec>();


	public static void Main(string[] args)
	{
	Vypis();

	celkemStran = seznamTemp.Count/jednaStrana + 1;

	public static void Vypis()
	int start = aktualniStrana * jednaStrana;
	for (int i = start; i < start + jednaStrana; i++) {
		Console.WriteLine(seznamTemp[i].ToString());
	}
	Console.WriteLine();
	Console.WriteLine("Načteno {0} záznamů", seznamTemp.Count);
			
	if (aktualniStrana+1 <= celkemStran) {
		Console.WriteLine("Strana {0} z {1}", aktualniStrana+1,celkemStran);
	}
}
}
Nahlásit jako SPAM
IP: 185.246.210.–
gna
~ Anonymní uživatel
1891 příspěvků
16. 4. 2021   #2
-
0
-

   

i < start + jednaStrana && i < seznamTemp.Count
Nahlásit jako SPAM
IP: 213.211.51.–
itlady0
Newbie
16. 4. 2021   #3
-
0
-

Děkuju. Po úpravě to funguje.

int start = aktualniStrana * jednaStrana;
for (int i = start; i < start + jednaStrana; i++) {
	if (i < seznamTemp.Count) {
		Console.WriteLine(seznamTemp[i].ToString());
	}
}
Nahlásit jako SPAM
IP: 185.246.210.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 60 hostů

Podobná vlákna

Výjimky a vlákna — založil Houp

Výjimky a DLL, nerozumím — založil Aigor

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý