my problem in VB.NET.
I hope you see my code.not all the my code is important.
the important part is in the second if condition and which is if snum = "".
the snum variable is a variable from double type and i check if this variable is empty. i mean it doesn't have any value.
and when i run the code , the program show me this error on the second if condition which i told you about.
""Additional information: Conversion from string "" to type 'Double' is not valid.""
I work on a program to move motors. and the code which i wrote is one of the things that i do in the program.
why i check if snum = "" ??
because the value of snum is the coordinates of one of the motors and it is Z Axis Motor. and the coordinates are written in TextBox.
i took the coordinates of Z Axis Motor from the TextBox and put it in snum variable. then i check if the snum variable is empty by this code if snum == "". if snum is empty then the Z Axis Motor will not move. and if snum is not empty and even if its value is 0 the Z Axis Motor Will Move.
so how can i check if a variable from double type doesn't have a value ?
enve if its value is 0 the motor will move.
i want to check if it doesn't have any value.
this is the code. the procedure works on button click
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim snum As Double
Dim tnum As Double
Dim h As Integer = 0
If h = 1 Then
snum = TextBox1.Text
tnum = TextBox1.Text
TextBox3.Text = snum
TextBox4.Text = tnum
Else
If snum = "" Then
snum = tnum
TextBox2.Text = "Hello , How Are You"
TextBox3.Text = snum
TextBox4.Text = tnum
End If
End If
End Sub
CodePudding user response:
Jmcilhinney is right: this code does not have much use. However here is how to convert the text variables to double and vice versa with CDBL () and Tostring:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim snum As Double
Dim tnum As Double
Dim h As Integer = 0
If h = 1 Then
snum = cDbl(TextBox1.Text)
tnum = cDbl(TextBox1.Text)
TextBox3.Text = snum.toString
TextBox4.Text = tnum.toString
Else
If snum = 0 Then
snum = tnum
TextBox2.Text = "Hello , How Are You"
TextBox3.Text = snum.toString
TextBox4.Text = tnum.toString
End If
End If
End Sub
CodePudding user response:
Your code still makes little sense as it is but I'll answer in a more general sense about value types. Double is a value type and therefore ALWAYS has a value. When you declare a variable, under the hood, the memory allocated to that variable will contain all zeroes by default and that is represented by Nothing in VB. What that actually means depends on the type. For all reference types (i.e. classes) it represents no object. For all value types (i.e. structures) it represents the default value of that type, e.g. False for Boolean, #1/01/0001# for Date and zero for all numeric types. That means that, in your case, your Double variables will have the value 0.0.
If you want to be able to represent no value for a value type then you have to use nullable value types, e.g. Nullable(Of Double) or Double? for short. You can test the HasValue property of a nullable value type to see whether it has a value and, if it does, get that value from the Value property. For a Nullable(Of T)/T?, the Value property will be type T. Note that getting the Value property when HasValue is False will throw an exception.
Dim d1 As Double?
Dim d2 As Double?
If d1.HasValue Then
Console.WriteLine("d1 = " & d1.Value)
Else
Console.WriteLine("d1 has no value")
End If
If d2.HasValue Then
Console.WriteLine("d2 = " & d2.Value)
Else
Console.WriteLine("d2 has no value")
End If
d1 = 0.0
d2 = 123.456
If d1.HasValue Then
Console.WriteLine("d1 = " & d1.Value)
Else
Console.WriteLine("d1 has no value")
End If
If d2.HasValue Then
Console.WriteLine("d2 = " & d2.Value)
Else
Console.WriteLine("d2 has no value")
End If
