|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Additional information: Cast from string "" to type 'Double' is not valid. erroramount of Miles, Yards, and Inches.....and converts it to metric (KM, M, and CM) when all values are entered to the input text boxes it works fine, but if there is a number missing I get the following error: An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll Additional information: Cast from string "" to type 'Double' is not valid. i have already tried a If txtmiles.Text = "" Then txmiles.Text = "0" End If and still didnt work here is my code if anyone can help thatd be great Private Sub btnCompute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCompute.Click 'This string takes the inputted numbers and converts them all to inches. Dim inches As String inches = (txtMiles.Text) * 63360 + (txtYards.Text) * 36 + (txtFeet.Text) * 12 + (txtInches.Text) 'This part converts CStr(inches) which was calculated above into Meters Dim meters As String meters = CStr(inches) / 39.37 'This calculates the calculates the kilometers, meters, and centimeters. Dim Kilometers As String Kilometers = CStr(meters) / 1000 Int(CStr(Kilometers)) Dim OutputMeters As String OutputMeters = ((CStr(Kilometers) - Int(CStr(Kilometers))) * 10 ^ 3) Int(CStr(OutputMeters)) Dim Centimeters As String Centimeters = ((CStr(OutputMeters) - Int(CStr(OutputMeters))) * 10 ^ 2) 'This posts the results to the results boxes txtKilometers.Text = Int(CStr(Kilometers)) txtmeters.Text = Int(CStr(OutputMeters)) 'This will round the centimeters to the decimal place and post it Dim n As Double = CStr(Centimeters) txtCentimeters.Text = (Math.Round(n, 1)) 'This will disable the txt box and enable the results txtMiles.ReadOnly = True txtYards.ReadOnly = True txtFeet.ReadOnly = True txtInches.ReadOnly = True txtmeters.ReadOnly = False txtCentimeters.ReadOnly = False txtKilometers.ReadOnly = False End Sub Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click 'This button will reset and clear all the text boxes txtMiles.Clear() txtYards.Clear() txtFeet.Clear() txtInches.Clear() txtKilometers.Clear() txtmeters.Clear() txtCentimeters.Clear() 'This will enable the txt box and disable the results txtMiles.ReadOnly = False txtYards.ReadOnly = False txtFeet.ReadOnly = False txtInches.ReadOnly = False txtKilometers.ReadOnly = True txtmeters.ReadOnly = True txtCentimeters.ReadOnly = True End Sub End Class DC15,
I can see that you don't have in top of your program Option Strict On, I think that surely for this program you need that. Net is calculating with most operators with doubles. Therefore does it look for me better to take the double as the internal value in this situation. You can convert a string to double with simple CDbl(String) I hope this helps, Cor Show quoteHide quote "dc15" <deese***@gmail.com> schreef in bericht news:1139026554.934113.5560@g44g2000cwa.googlegroups.com... > For an intro to VB project I have to write a program which takes an > amount of Miles, Yards, and Inches.....and converts it to metric (KM, > M, and CM) when all values are entered to the input text boxes it works > fine, but if there is a number missing I get the following error: > > An unhandled exception of type 'System.InvalidCastException' occurred > in microsoft.visualbasic.dll > > Additional information: Cast from string "" to type 'Double' is not > valid. > > i have already tried a > > If txtmiles.Text = "" Then > txmiles.Text = "0" > End If and still didnt work > > here is my code if anyone can help thatd be great > > Private Sub btnCompute_Click(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles btnCompute.Click > > 'This string takes the inputted numbers and converts them all > to inches. > Dim inches As String > inches = (txtMiles.Text) * 63360 + (txtYards.Text) * 36 + > (txtFeet.Text) * 12 + (txtInches.Text) > > 'This part converts CStr(inches) which was calculated above > into Meters > Dim meters As String > meters = CStr(inches) / 39.37 > > 'This calculates the calculates the kilometers, meters, and > centimeters. > Dim Kilometers As String > Kilometers = CStr(meters) / 1000 > Int(CStr(Kilometers)) > > Dim OutputMeters As String > OutputMeters = ((CStr(Kilometers) - Int(CStr(Kilometers))) * 10 > ^ 3) > Int(CStr(OutputMeters)) > > Dim Centimeters As String > Centimeters = ((CStr(OutputMeters) - Int(CStr(OutputMeters))) * > 10 ^ 2) > > 'This posts the results to the results boxes > txtKilometers.Text = Int(CStr(Kilometers)) > txtmeters.Text = Int(CStr(OutputMeters)) > 'This will round the centimeters to the decimal place and post > it > Dim n As Double = CStr(Centimeters) > txtCentimeters.Text = (Math.Round(n, 1)) > > 'This will disable the txt box and enable the results > txtMiles.ReadOnly = True > txtYards.ReadOnly = True > txtFeet.ReadOnly = True > txtInches.ReadOnly = True > txtmeters.ReadOnly = False > txtCentimeters.ReadOnly = False > txtKilometers.ReadOnly = False > > End Sub > > Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e > As System.EventArgs) Handles btnReset.Click > 'This button will reset and clear all the text boxes > txtMiles.Clear() > txtYards.Clear() > txtFeet.Clear() > txtInches.Clear() > txtKilometers.Clear() > txtmeters.Clear() > txtCentimeters.Clear() > 'This will enable the txt box and disable the results > txtMiles.ReadOnly = False > txtYards.ReadOnly = False > txtFeet.ReadOnly = False > txtInches.ReadOnly = False > txtKilometers.ReadOnly = True > txtmeters.ReadOnly = True > txtCentimeters.ReadOnly = True > > End Sub > End Class > "dc15" <deese***@gmail.com> schrieb: Turn on 'Option Strict'.> For an intro to VB project I have to write a program which takes an > amount of Miles, Yards, and Inches.....and converts it to metric (KM, > M, and CM) when all values are entered to the input text boxes it works > fine, but if there is a number missing I get the following error: > > An unhandled exception of type 'System.InvalidCastException' occurred > in microsoft.visualbasic.dll > > Additional information: Cast from string "" to type 'Double' is not > valid. -- M S Herfried K. Wagner M V P <URL:http://dotnet.mvps.org/> V B <URL:http://classicvb.org/petition/> Thanks for all the help, i'd always thought Option Strict On was a
default setting but I guess I was wrong. I solved the first problem by using an If Statement, but now im running into a whole new problem. When I enabled option strict I got an error " "Option Strict On disallows implicit conversions from 'Double' to 'String'." on the part posting the output to the text boxes.... here is my code ption Strict On Public Class Form1 Inherits System.Windows.Forms.Form " Windows Form Designer generated code " Private Sub btnCompute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCompute.Click 'These IF statements will prevent an error from occuring if there is no value in the text boxes If txtMiles.Text.Trim() = "" Then txtMiles.Text = "0" End If If txtYards.Text.Trim() = "" Then txtYards.Text = "0" End If If txtInches.Text.Trim() = "" Then txtInches.Text = "0" End If If txtFeet.Text.Trim() = "" Then txtFeet.Text = "0" End If 'This Double takes the inputted numbers and converts them all to inches. Dim inches As Double inches = CDbl(txtMiles.Text) * 63360 + CDbl(txtYards.Text) * 36 + CDbl(txtFeet.Text) * 12 + CDbl(txtInches.Text) 'This part converts Cdbl(inches) which was calculated above into Meters Dim meters As Double meters = CDbl(inches) / 39.37 'This calculates the calculates the kilometers, meters, and centimeters. Dim Kilometers As Double Kilometers = CDbl(meters) / 1000 Int(CDbl(Kilometers)) Dim OutputMeters As Double OutputMeters = ((CDbl(Kilometers) - Int(CDbl(Kilometers))) * 10 ^ 3) Int(CDbl(OutputMeters)) Dim Centimeters As Double Centimeters = ((CDbl(OutputMeters) - Int(CDbl(OutputMeters))) * 10 ^ 2) 'This posts the results to the results boxes txtKilometers.Text = Int(CDbl(Kilometers)) txtmeters.Text = Int(CDbl(OutputMeters)) 'This will round the centimeters to the decimal place and post it Dim n As Double = CDbl(Centimeters) n = CDbl(Centimeters) txtCentimeters.Text = Math.Round(n, 1) 'This will disable the txt box and enable the results txtMiles.ReadOnly = True txtYards.ReadOnly = True txtFeet.ReadOnly = True txtInches.ReadOnly = True txtmeters.ReadOnly = False txtCentimeters.ReadOnly = False txtKilometers.ReadOnly = False If txtMiles.Text = "" Then txtMiles.Text = "0" End If End Sub Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReset.Click 'This button will reset and clear all the text boxes txtMiles.Clear() txtYards.Clear() txtFeet.Clear() txtInches.Clear() txtKilometers.Clear() txtmeters.Clear() txtCentimeters.Clear() 'This will enable the txt box and disable the results txtMiles.ReadOnly = False txtYards.ReadOnly = False txtFeet.ReadOnly = False txtInches.ReadOnly = False txtKilometers.ReadOnly = True txtmeters.ReadOnly = True txtCentimeters.ReadOnly = True End Sub End Class I've tried everything I can, and this is really annoying me. Does anyone have any ideas on how i can fix this? itd be greatly appreciated Hello dc15,
> Thanks for all the help, i'd always thought Option Strict On was a <SNIP>> default setting but I guess I was wrong. I solved the first problem > by using an If Statement, but now im running into a whole new problem. > When I enabled option strict I got an error " > > "Option Strict On disallows implicit conversions from 'Double' to > 'String'." > txtCentimeters.Text = Math.Round(n, 1) How about txtCentimeters.Text=n.ToString("n1"). Likewise you could use txtCentimeters.Text=Math.Round(n,1).ToString. (Beware you will get rounding differences between these options. Math.Round uses financial rounding whereas the n.ToString("n1") always rounds .5 up. Additionally, you may want to work more on your type checking. What happens in your solution when you type "a" in one of the text boxes? You might want to look into Decimal.TryParse if you are using 2005. Jim Wooley
Printing using margins
Subclassed Textbox OnLeave Overrides StreamWriter and BinaryWriter (same problem better explained) StreamWriter and BinaryWriter PostMessage ComboBox Variable declarations.... in VB.Net IIS over write running .exe How to initiate dial up sequence filtering data view with row filter using boolean value |
|||||||||||||||||||||||