Just nu i M3-nätverket
Gå till innehåll

Vad är fel i denna kod


gubbedelux

Rekommendera Poster

Option Strict OffPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim diam As Integer Dim stign As Decimal Dim mdimmax As Decimal Dim mdimmin As Decimal Dim mattradsdiameter As Decimal Dim tillagsmatt As Decimal diam = Integer.Parse(diamTextBox.Text) stign = Decimal.Parse(stignTextBox.Text) ' GÄNGTABELLVÄRDEN ' '************* M16**************** If diam = 16 And stign = 2 Then mdimmax = 14.663 mdimmin = 14.503 ElseIf diam = 16 And stign = 1.5 Then mdimmax = 14.929 mdimmin = 14.824 End If ' MÄTRÅDSVÄRDEN ' '**********Stigning 2.0************** If stign = 2 Then mattradsdiameter = 1.15 tillagsmatt = 1.718 '********** Stigning 1.5 ************* ElseIf stign = 1.5 Then mattradsdiameter = 0.85 tillagsmatt = 1.251 '********************************** End If diamLabel.Text = diam.ToString stignLabel.Text = stign.ToString("F2") mdimmaxLabel.Text = mdimmax.ToString("F3") mdimminLabel.Text = mdimmin.ToString("F3") mattradsdiameterLabel.Text = mattradsdiameter.ToString("F2") tillagsmattLabel.Text = tillagsmatt.ToString("F3") mdmaxtmLabel.Text = tillagsmatt + mdimmax mdmintmLabel.Text = tillagsmatt + mdimmin malvardeLabel.Text = ((tillagsmatt + mdimmax) - (tillagsmatt + mdimmin)) / 2 + (tillagsmatt + mdimmin).ToString("F3") End SubEnd Class

Vad är det för fel på denna kod. När jag har Option Strict Off så funkar programmet men är Option Strict On så

funkar det inte.

Kan vara något med dim, decimal och toString kanske.

Länk till kommentar
Dela på andra webbplatser

Tack för svar. Ja det är tydligen någon typomvandling som inte är tillåten. Hur skriver man ut ett värde som man har anget som t.ex.

 

stign=Decimal.Parse(stignTextBox.Text)

 

Värdet matas in med decimaler i stignTextBox.Text

Värdet från stign ska sedan visas i stignLabel.Text

 

Jag skriver då följande stignLabel.Text = stign.ToString("F2")

 

Vad är galet ?

Länk till kommentar
Dela på andra webbplatser

VB är lite okänd mark för mig men jag gör en testrutin:

  Private Sub Test()
   	Dim d As Decimal
   	Dim d2 As Decimal
   	Dim st As String
   	d = 5.2D
   	st = CStr(d)
   	d2 = Decimal.Parse(st)
   	Dim st2 As String
   	st2 = d2.ToString()
   	Me.TextBox1.Text = st2

End Sub

och börjar fundera på om VB kör med landets system på något vis.

Dvs om jag tilldelar strängen st värdet 5.2 så skiter sig konverteringen.

tilldelar jag st värdet från d blir det 5,2.

 

Kanske det ger dig en ledtråd,

Okej, detta testat inom VB,Net men det torde inte vara någon större skillnad.

Länk till kommentar
Dela på andra webbplatser

Hej och tack

 

Det enda jag ska göra är att skriva in ett heltalsvärde i en textBox namngiven som diamTextBox

Detta värde ska sedan presenteras i en label som heter diamLabel

 

Ytterligare ett värde ska skrivas in men med decimaler namngiven som stignTextBox

Detta värde ska sedan presenteras i en label som heter stignLabel

 

Blev det förståligare nu?

Länk till kommentar
Dela på andra webbplatser

Nu har jag lekt runt lite med... Varför inte använda Integer och Double:

  Dim x As Integer
   	Dim d As Double
   	' Dim prov As System.IFormatProvider.
   	x = CInt(Me.tbI1.Text)
   	Me.tbI2.Text = x.ToString()
   	d = Val(Me.tbD1.Text)
   	Me.tbD2.Text = d.ToString()  

 

finns även CDec att leka med

Länk till kommentar
Dela på andra webbplatser

Det verkar enkelt men det är det tydligen inte.

 

Jag ska skriva in ett decimaltal typ 1.2 in en textbox.

Samma värde (1.2) som skrev in i textboxen ska sedan visas i en label.

 

Hur skriver man koden för detta

 

Jag kan inte göra det enklare.

 

 

Länk till kommentar
Dela på andra webbplatser

ja, du har en punkt där som ställer till det....

VB tar det decimaltecken som är inställt i Windows och använder det. Dvs sitter du på en svensk dator där kommatecken är decimalseparator får du använda decimaltecken.

 

Eller ställa om VB att använda punkt som decimalseparator. Det går säkert. Eller göra en sök&ersätta och anpassa strängen men då blir det ju problem om du sedan sitter på en engelsspråkig dator som vill ha punkt som decimalseparator.

 

Nu VB.Net igen, vet inte om detta finns i vanliga VB

http://msdn.microsoft.com/en-us/library/ew0seb73.aspx

Kan, tror jag, användas för att anpassa vilka tecken som är tillåtna och hur de tolkas.

Länk till kommentar
Dela på andra webbplatser

Det löste sig med följande kod. Du hade rätt jag var tvungen att använda komma istället för punkt.

 

Dim diam As Decimal = CType(Me.diamTextBox.Text, Decimal)

 

diamLabel.Text = CStr(diam)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...