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é :-/

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
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é nový
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ž… nový
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
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
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
Bože! Ten VB má ale prasacký syntax...::):-) nový
MaSo 19.12.2007 20:07
MaSo
3-[ Moje pocity euforie nahrazuje zlost. Ono to nefunguje pro desetinná čísla. No nic, prostě zadám,… nový
marekdrtic 19.12.2007 20:51
marekdrtic
co to konkretne dela/nedela hodi to tu hlasku nebo je spatnej vysledek? nový
AZOR 19.12.2007 20:54
AZOR
Ono to nefunguje Ono to je totiž asi špatně naprogramované. Kdybys alespoň napsal, co nefunguje?!… nový
host 19.12.2007 21:00
host
If IsNumeric(vykon.Text) Then If IsNumeric(syceni.Text) Then dopprurez.Text = Sqr((vykon.Text / 0.8)… nový
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...

Uf, jestli si nedokážeš najít použití funkce v helpu nebo na webu, tak to budeš mít v životě jako programátor těžký. ::):-/

If IsNumeric(polomer.Text) and (Val(polomer.Text) > 0) Then
    vysledek.Text = 2 * 3,141592 * polomer.Text
  Else
    MsgBox("Špatně zadaný poloměr")
End If

Ono to nefunguje

Ono to je totiž asi špatně naprogramované.

Kdybys alespoň napsal, co nefunguje?! Funkce isnumeric() samozřejmě pracuje i s desetinnými čísly. Pokud máš na mysli funkci Val(), tak ta vyžaduje desetinné číslo zadané s tečkou - nikoliv čárkou.

dobré je používat nějaký logický operátor typu: OR/AND:

If isNumeric(vykon.text) AND IsNumeric(syceni.Text) Then
vypocet
Else
MsgBox("Musi byt cislo")
End if

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