C# Problém s aplikací, vyjímka ošetřena ale ošetření nefunguje – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# Problém s aplikací, vyjímka ošetřena ale ošetření nefunguje – .NET – Fórum – Programujte.comC# Problém s aplikací, vyjímka ošetřena ale ošetření nefunguje – .NET – Fórum – Programujte.com

 

CUROMaN
~ Anonymní uživatel
2 příspěvky
18. 8. 2009   #1
-
0
-



string[,] slovnik = { {"beat,"beat","beaten","bít,tlouci"} , {"bite","bit","bitten","kousat/štípat"} , {"buy","bought","bought","koupit"}, {"catch","caught","caught","chytit"} };

private void dalsiSloveso()
{
indexSlovesaVeSlovniku++;
int slovnikSloves = slovesVeSlovniku / 4;
if (slovnikSloves < indexSlovesaVeSlovniku)
{
TextBox ceskyVyznam = ceskyVyznamPole;
TextBox anglickyInfinitiv = anglickyInfinitivPole;
TextBox pastSimple = pastSimplePole;
TextBox pastParticiple = pastParticiplePole;
ceskyVyznam.ReadOnly = true;
anglickyInfinitiv.ReadOnly = true;
pastSimple.ReadOnly = true;
pastParticiple.ReadOnly = true;
kontrolaTlacitko.Enabled = false;
zkouseniProbiha = false;
zacitZkouseniTlacitko.Text = "Spustit zkoušení";
vyhodnoceni();
return;
}
else
{
TextBox ceskyVyznamP = ceskyVyznamPole;
string ceskyVyznamO = slovnik[indexSlovesaVeSlovniku, 3];
ceskyVyznamP.Text = ceskyVyznamO;
}
}


Hlásí to exception IndexOutOfRange na zvyr. radku, hlásí to proto, že indexSlovesaVeSlovniku je větší než počet sloves ve slovníku (4). Tento počet je ovšem uložen v proměnné slovnikSloves, a je testován pro předcházení těmto situacím! Jak je možné, že to nefunguje? :smile19:

Nahlásit jako SPAM
IP: 88.146.173.–
KIIV
~ Moderátor
+43
God of flame
18. 8. 2009   #2
-
0
-

budu jen hadat, ale indexy se cisluji obvykle od 0 - takze tu podminku tam mas dobre.
Nicmene pokud nastane situace, ze mas index vetsi nez pocet slov, tak tam stejne hrabes pomoci else ..

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
18. 8. 2009   #3
-
0
-

Zdravím,
tak já toho tedy napíšu víc :)

1. Proměnná slovesVeSlovniku pravděpodobně obsahuje hodnotu slovnik.Length, tedy délku všech dimenzí pole (nyní 16), ale to evidentně nechceš. Místo toho použij:

int slovesVeSlovniku = slovnik.GetLength(0);
Tím získáš délku první dimenze (nyní 4) a vyhneš se tím zbytečnému dělení/násobení.

2. Těm situacím nepředcházíš. Zkus si uvědmit, co se děje při každém průchodu metodou. Předpokladem je, že se ještě před prvním voláním metody načte první sloveso (tj. indexSlovesaVeSlovniku = 0). Jednotlivý průchody, pak dopadnou asi takhle:
indexSlovesaVeSlovniku=1; slovnikSloves > indexSlovesaVeSlovniku; OK

indexSlovesaVeSlovniku=2; slovnikSloves > indexSlovesaVeSlovniku; OK
indexSlovesaVeSlovniku=3; slovnikSloves > indexSlovesaVeSlovniku; OK
indexSlovesaVeSlovniku=4; slovnikSloves = indexSlovesaVeSlovniku; ERROR
Ta chyba vznikne proto, že v první dimenzi pole jsou 4 prvky (index 0,1,2,3), ale ty se snažíš získat i pátej prvek.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
18. 8. 2009   #4
-
0
-

To KIIV : Pokud to má fungovat tak, jak si myslím (z ukázkovýho kódu to nejde moc dobře poznat), tak je ta podmínka blbě.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
CUROMaN
~ Anonymní uživatel
2 příspěvky
18. 8. 2009   #5
-
0
-

Zdravím.
Hrabu se v tom celý odpoledne ale pořád mi to hází tu samou chybu.
Lidi, poraďte prosím jak to spravit!
Pokud to budete potřebovat, celý kód aplikace je tady: http://pastebin.com/m1daae407

Nahlásit jako SPAM
IP: 88.146.173.–
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, 29 hostů

 

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