2010-11-18 5 views
1

Ich habe einen Fehler in meinem Programm, wo, wenn ein Benutzer die Schaltfläche (Berechnen) drücken, wenn keine Eingabe in das Textfeld ist, zeigt das Programm diesen Fehler: "Konvertierung von Zeichenfolge" " "Double" einzugeben ist nicht gültig. " Ich möchte das lösen, aber ich bin nicht sicher, wie man die Umwandlung durchführt. Ich dachte vielleicht an CType, aber ich höre von Parsing. Wie gehe ich vor? Das Textfeld heißt mskTxtInput und das Button-Objekt heißt btnCheck, das die gesamte Berechnung und Verarbeitung durchführt.VB.Net Konvertieren von Zeichenfolge in doppelte

Update: Dies ist mein Code außer der Parsing-Methode so hoffe, dass dies ein wenig hilft!

Private Sub btnCheck_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Griffe btnCheck.Click pic1.Visible = False ‚verbergen Bild pic1.Image = My.Resources.A pic2.Image = My.Resources.F

Dim value As Double 
    If Double.TryParse(mskTxtInput.Text, value) = Then 
     MsgBox("parsing success") ' parsing worked, so use the value in here 
    Else 
     MsgBox("parsing failed") ' parsing failed, so alert the user to that fact 
    End If 


    If radAdd.Checked = True Then 
     totalNum = num1 + num2 


    End If 

    If radSub.Checked = True Then 
     totalNum = num1 - num2 

    End If 

    If radMulti.Checked = True Then 
     totalNum = num1 * num2 



    End If 

    If mskTxtInput.Text = totalNum Then 
     lblAns.Text = ("Correct!") 
     lblAns2.Text = ("Answer is " & totalNum) 
     pic1.Visible = True 
     wins = wins + 1 
     nScore = wins 



    Else 
     lblAns.Text = ("Incorrect") 
     lblAns2.Text = ("Answer should be " & totalNum) 
     pic2.Visible = True 

    End If 

    attempts = attempts + 1 
    If attempts = 5 Then 
     MessageBox.Show("Game Finished! ", "End Of Game", _ 
         MessageBoxButtons.OK, _ 
         MessageBoxIcon.Exclamation) 
     lblAns.Text = ("You scored " & wins & " Out of 5") 
     btnSpin.Enabled = False 
     pic1.Visible = False 
     pic2.Visible = False 
     lblAns2.Text = "" 
     lblAns2.Text = "Play again?" 
     btnCheck.Enabled = False 
     btnNew.Enabled = True 
     attempts = 0 
     wins = 0 
    End If 


    mskTxtInput.Clear() 
    mskTxtInput.Focus() 


End Sub 
+0

einige Code Bitte teilen, wo dieses Problem auftritt. – BeemerGuy

+0

Dies ist nicht direkt relevant für Ihre Frage, aber es sieht so aus, als ob Sie nicht "Option Strict" verwenden. Ich empfehle Ihnen, das einzuschalten: Der Compiler generiert dann Warnungen über gefährlichen Code, der Ihnen auf lange Sicht Zeit spart. – MarkJ

Antwort

2

Verwenden Sie die TryParse Methode, um die Analyse zu tun bekommen eine Ausnahme zu vermeiden, wenn die Analyse fehlschlägt:

Dim value As Double 
If Double.TryParse(mskTxtInput.Text, value) Then 
    ' parsing worked, so use the value in here 
Else 
    ' parsing failed, so alert the user to that fact 
End If 
+0

Hey! Ich benutzte Ihren Code, machte aber die Messagebox-Ergänzungen von "Parsing bestanden" und "Parsing fehlgeschlagen" und erhielt weiterhin das "Parsing fehlgeschlagen". Ich kann den Code offensichtlich zeigen und hoffe, dass es ein wenig hilft! –

+0

@William Mc: Sie haben einen '=' Operator vor 'Dann' in den Code gesetzt, den Sie gepostet haben, damit er nicht ausgeführt wird. Entferne das und es funktioniert. Ich habe überprüft, dass der Code das erste Meldungsfeld anzeigt, wenn das Parsing erfolgreich ist. – Guffa

+0

Ich nahm den Operator =, aber es hat immer noch nicht funktioniert: (VS markiert immer diese Zeile in gelb: Wenn mskTxtInput.Text = totalNum Dann –

0

dim iVar als ganzzahlige dim SSTR as string

SSTR = ""

Ivar = Val (SSTR)

0

Verwenden Sie die statische Methode Double.TryParse() verwenden. Wenn es wahr zurückgibt, war das Parsen erfolgreich und Sie können mit der Operation fortfahren. Wenn es false zurückgibt, war das Parsen nicht erfolgreich, und Sie sollten eine Fehlermeldung anzeigen (unter Verwendung von MessageBox, wenn Sie dies wünschen) und den Vorgang abbrechen.

Verwandte Themen