Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

use try...catch alone to input numbers less than 19 digits long in text box

Posted on 2006-07-01
8
277 Views
Last Modified: 2010-04-17
Using try..catch statement alone i am trying to input a number in a text box. I am trying to make it so that a message pops if the input is 19 9s or more. I dont want the answers textbox to display infinity, instead i want it to pop a msgbox saying the input is too big. Here is the code: (please try not to use if...else statements, only try...catch)


 'defines what happens when the user clicks on the calculate button. It displays the equation on the text box for result.
    Private Sub CALCULATEButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CALCULATEButton.Click



        Try
            IsNumeric(radius)


            'assigns the value of the RADIUS text box to the radius variable
            radius = RADIUSTextBox.Text


            'Determine what radio buttons are checked and calculate according
            If SURFACERadioButton.Checked = True Then
                equation = 4 * PI * (radius ^ 2)
            End If


            If VOLUMERadioButton.Checked = True Then
                equation = (4 / 3) * PI * (radius ^ 3)
            End If

            RESULT = CStr(equation)

            'displays the result of the equation
            RESULTTextBox.Text = equation


        Catch ex As OverflowException
            Console.WriteLine("Error: Input too large/small, Calculated value too large/small")
            MsgBox("Error: Input too large/small, Calculated value too large/small" & vbCrLf & "Please enter a different value", , "Sphere Volume and Area Calculator Version 2")
            RADIUSTextBox.Text = 1


        Catch ex As InvalidCastException
            Console.WriteLine("Error: incorrect input, string used")
            MsgBox("Please enter a valid number!" & vbCrLf & "Expressions like a , ! @ # $ % ^ & * ( ) _ + = | / \ { } [ ] ' : ; < > ?" & vbCrLf & "are not accepted.", , "Sphere Volume and Area Calculator Version 2")
            RADIUSTextBox.Text = 1

       
        End Try


    End Sub

 
0
Comment
Question by:supercoqui
  • 5
  • 3
8 Comments
 
LVL 8

Expert Comment

by:bramsquad
ID: 17025014
use a checked statement

for example

            try
            {
                checked { Convert.ToInt32(RADIUSTextBox.Text);  }
            }
            catch (OverflowException e)
            {
                Console.WriteLine("Error caught: {0}", e);
            }

~b
0
 
LVL 8

Expert Comment

by:bramsquad
ID: 17025021
btw, this is in C#, should be easy to convert to vb.net
0
 

Author Comment

by:supercoqui
ID: 17025033
wow, almost works, it blocks on 10 9s and there after, but i can still get values with 18 9s without using the statement provided. My normal code gives the infinity at 19 9s, so i am trying for it to work normally if i input 18 9s.

I only used this part because the rest gave me error:

Convert.ToInt32(RADIUSTextBox.Text)
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 

Author Comment

by:supercoqui
ID: 17025047
ok I changed the value to
Convert.ToInt64(RADIUSTextBox.Text)
and it works fine for the surface, on 19 9s it catched the exception.

Now the problem lies when i do it for volume, volume only works with 12 9s and then it goes into displaying infinity.
0
 
LVL 8

Accepted Solution

by:
bramsquad earned 500 total points
ID: 17025080
the biggest number a computer can handle is an unsigned long int....and it depends on how many processor bits it is

if you do Convert.ToUInt64(RADIUSTextBox.Text) that will kick back all values more than

18,446,744,073,709,551,615

you could do a Convert.ToInt64(RADIUSTextBox.Text) - this will error values larger than

9,223,372,036,854,775,807

which is slightly less than 19 9's and more than 18 9's

vb.net may emulate a 64 bit processor, but if you only have a 32 bit cpu you may get an error.  i dont know

other than that the only way is to do a string conversion

~b


0
 

Author Comment

by:supercoqui
ID: 17025102
I found the way messing around with the information provided by bramsquad, thanks
0
 
LVL 8

Expert Comment

by:bramsquad
ID: 17025107
hmm, 12 9's is weird because even an UInt32 is less than 10 9's

are you doing the same checked statement?  something like

checked { Convert.ToInt64(VOLUMETextBox.Text);  }

???
0
 
LVL 8

Expert Comment

by:bramsquad
ID: 17025110
well done
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Hide vba in gp 7 104
C# code editing and collaboration 3 131
T-SQL:  Sigh---Boy, this is fun.... 12 56
Object Oriented Programming, C#, referencing, scoping. 13 69
I know it’s not a new topic to discuss and it has lots of online contents already available over the net. But Then I thought it would be useful to this site’s visitors and can have online repository on vim most commonly used commands. This post h…
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

860 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question