Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Visual Basic - ošetření chyb

Potřeboval bych vědět, jak se ošetří ve Visual Basicu chyba tohoto typu:

vysledek.Text = 2 * 3,141592 * polomer.Text

Pokud do pole "polomer" někdo napíše třeba dsgjki, tak program zákonitě spadne. Jak docílit toho, aby se to při takto špatně zadaném "čísle" zobrazil např MsgBox s nápisem "Piš pouze číslice!!!" a program se v tu chvíli zastavil. Chci mít ten můj program vyšperkovaný, ale jak říká jeden z Murphyho zákonů něco takového : Napíšeš program, ošetříš ho jak můžeš, ale VŽDY se najde jeden blbec, kterej ho shodí :-)
Díky za odpovědi.

P.S. Na Googlu jsem hledal ale nic jsem nenašel, možná je heslo "Visual Basic ošetření chyb" špatné :-/

Předmět Autor Datum
Try 'Code that may raise an error. Catch 'Code to handle the error. Finally 'Code to do any final c…
AZOR 19.12.2007 19:28
AZOR
Taky good ale trochu dlouhé
marekdrtic 19.12.2007 20:50
marekdrtic
jak nefunguje? pro desetiná cisla - jsi si jistej oddělením tečka/čárka/dvojtečka..? Každopdáně použ…
AZOR 19.12.2007 20:53
AZOR
Funkce isnumeric() http://msdn2.microsoft.com/en-us/library/6cd3f6w1(V S.80).aspx
host 19.12.2007 19:28
host
:-)pravda, čistější řešení (ošetřit oboji na zápornej poloměr)
AZOR 19.12.2007 19:30
AZOR
Mně to dojde až to uvidím na příkladu (jsem asi blbec) Takže : polomer = textové pole, kam se zadává…
marekdrtic 19.12.2007 19:35
marekdrtic
Ved na tom msdn mas aj priklad. Pred vypoctom pouzijes if a testovat budes ze ci IsNumeric(polomer.T…
MM.. 19.12.2007 19:40
MM..
If IsNumber(polomer.text) Then vysledek=Math.PI*polomer.text*2 Else MsgBox "spatne" End If nejak t…
AZOR 19.12.2007 19:40
AZOR
Uf, jestli si nedokážeš najít použití funkce v helpu nebo na webu, tak to budeš mít v životě jako pr…
host 19.12.2007 19:42
host
OOOOOOOOOOOO Už to chápu :-D. Dneska jsem vygumovanej.
marekdrtic 19.12.2007 19:45
marekdrtic
Bože! Ten VB má ale prasacký syntax...::):-)
MaSo 19.12.2007 20:07
MaSo
3-[ Moje pocity euforie nahrazuje zlost. Ono to nefunguje pro desetinná čísla. No nic, prostě zadám,…
marekdrtic 19.12.2007 20:51
marekdrtic
co to konkretne dela/nedela hodi to tu hlasku nebo je spatnej vysledek?
AZOR 19.12.2007 20:54
AZOR
Ono to nefunguje Ono to je totiž asi špatně naprogramované. Kdybys alespoň napsal, co nefunguje?!…
host 19.12.2007 21:00
host
If IsNumeric(vykon.Text) Then If IsNumeric(syceni.Text) Then dopprurez.Text = Sqr((vykon.Text / 0.8)…
marekdrtic 20.12.2007 09:41
marekdrtic
dobré je používat nějaký logický operátor typu: OR/AND: If isNumeric(vykon.text) AND IsNumeric(syce… poslední
AZOR 20.12.2007 09:49
AZOR

Try
'Code that may raise an error.
Catch
'Code to handle the error.
Finally
'Code to do any final clean up.
End Try
--------->>

Try
vysledek.Text = 2 * 3,141592 * polomer.Text
Catch
MsgBox "Lucinka nikdy nezadava znaky misto cislic"
Finally
/nic/prazdno/dokonceni
End Try

Podle google...

Ved na tom msdn mas aj priklad.
Pred vypoctom pouzijes if a testovat budes ze ci IsNumeric(polomer.Text) je TRUE (vtedy robis vypocet), inac nerobis vypocet ale vypises chybu.
P.S. dobre by bolo potom aj testovat ze ci je to mensie ako nula, ak ano tak tiez vypises chybu kedze zaporny polomer je tiez blbost.

Zpět do poradny Odpovědět na původní otázku Nahoru