C# - Try and Catch – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# - Try and Catch – .NET – Fórum – Programujte.comC# - Try and Catch – .NET – Fórum – Programujte.com

 

TonyT
~ Anonymní uživatel
1 příspěvek
30. 5. 2013   #1
-
0
-

Zdravím. Mám tu takový menší problém. Tvořím jeden malý program ve Visual studiu pro výpočet průměru fresnelovy zóny, ale narazil jsem na jednu potíž. Chtěl jsem vytvořit ošetření proti písmenům v textboxu (Zadané hodnoty musí být pouze číselné) pomocí try and catch. Detekce písmen funguje v pořádku, protože zpráva o přítomnosti písmen se zobrazí, ale problém je v tom, že se program nezastaví, abych mohl hodnotu opravit, ale pokračuje dále, čímž aplikace spadne kvůli písmenům se kterými nemůže počítat. Kdysi v jednoduché kalkulačce jsem toto udělal bez problému díky prvku ve switchi, ale zde to udělat nemohu.

Zde je kód:

namespace Project_Fresnel
{
    public partial class Form1 : Form
    {
       
        const double svetlo = 300000;
        const double tis = 1000; // Deklarace konstantních proměnných pro převody jednotek
        const double des = 10;
        const double pol = 2;
        double n, m;
        public Form1()
        {
            InitializeComponent();
        }

        private void Osetreni_pismen()
        {
            try
            {
                n = double.Parse(txbvlndel.Text);
                m = double.Parse(txbvzdalen.Text);
            }
            catch
            {
                MessageBox.Show("Zadejte číslo, nikoli písmeno!"); }
          
        }

        private void Fresnelova_Zona()
        {
            //***********************************************************************************
            //Výpočet průměru fresnelovy zóny
            double frekvence = Convert.ToDouble(txbvlndel.Text); // Načtení frekvence z txbvlndel
            double helpfrek = svetlo / frekvence; // Výpočet vlnové délky v mm
            double vlndel = helpfrek / des; // Dělení vlnové délky 10 -> výsledek v cm
            double vzdalenost = Convert.ToDouble(txbvzdalen.Text); // Načtení vzdálenosti vysílačů z txbvzdalen
            double polovina = vzdalenost / pol; // Výpočet poloviny vzdálenosti vysílačů (Největší průměr)
            double hs = polovina * polovina;
            double zlom = hs / vzdalenost;
            double ns = vlndel * zlom;
            double pr = Math.Sqrt(ns);
            double prumer = pr / des;
            prumer = Math.Round(prumer*100)/100; // Zaokrouhlování na 2 desetinná místa
            txbprum.Text = prumer.ToString();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Osetreni_pismen();
            Fresnelova_Zona();
        }
        }


        }

Děkuji za každou radu a odpověď.

Nahlásit jako SPAM
IP: 194.228.20.–
Evzen+2
Návštěvník
30. 5. 2013   #2
-
+1
-
Zajímavé

Tak třeba tu osetrovaci metodu udelej s navratovym typem bool a za messageBoxem dej return false.

V clicku pak budeš reagovat na to, jestli ti to vrátí true, tak pokračuje ve výpočtu, jinak nic :-) 

Nahlásit jako SPAM
IP: 88.101.117.–
P
~ Anonymní uživatel
212 příspěvků
30. 5. 2013   #3
-
0
-

Misto try...catch pouzij double.TryParse

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

Podobná vlákna

Try catch — založil birkof

Try catch finally — založil damegu

Try { smth } catch { — založil noro

Try-Catch blok vysvětlení — založil Noobster

Catch nezachytí vyjímku — založil Scrash

 

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