Kommarechnung beim Taschenrechner

Jaschiii

Grünschnabel
Guten Abend miteinander.

Ich habe eine Frage. Undzwar wollte ich in VB einen Taschenrechner programmieren. Es hat auch alles geklappt bis ich auf das Kommerzeichen gekommen bin. Wie baue ich dies in die Rechnung ein. Ich habe es jetzt schon geschaft das man die Kommertaste nur einmal betätigen darf. Dann habe ich noch das problem beim Vorzeichenwechsel. Ich schaffe das er die Ziffer ins minus setzt. Aber nicht wieder zurück. Hier mal der Quellcode:
(Das Programm ist auch nochmal im Anhang vorhanden)


Dim zahl1 As Integer
Dim zahl2 As Integer
Dim gleich As Integer
Dim operator As Integer
Private Sub cmd_acht_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "8"
End Sub

Private Sub cmd_clear_Click()
tf_oben.Text = Clear
tf_oben.Tag = ""
End Sub

Private Sub cmd_drei_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "3"
End Sub

Private Sub cmd_durch_Click(Index As Integer)
zahl1 = tf_oben
operator = "4"
tf_oben.Text = Clear
tf_oben.Tag = ""
End Sub

Private Sub cmd_eins_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "1"
End Sub

Private Sub cmd_fuenf_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "5"
End Sub

Private Sub cmd_gleich_Click()
zahl2 = tf_oben.Text
If operator = "1" Then
tf_oben.Text = zahl1 + zahl2
End If
If operator = "2" Then
tf_oben.Text = zahl1 - zahl2
End If
If operator = "3" Then
tf_oben.Text = zahl1 * zahl2
End If
If operator = "4" Then
tf_oben.Text = zahl1 / zahl2
End If
If operator = "5" Then
tf_oben.Text = zahl1 ^ zahl2
End If
End Sub

Private Sub cmd_hoch2_Click()
zahl1 = tf_oben
operator = "5"
tf_oben.Text = Clear
End Sub

Private Sub cmd_komm_Click(Index As Integer)
If tf_oben.Tag = "" Then
tf_oben.Text = tf_oben.Text & ","
tf_oben.Tag = "voll"
End If
End Sub

Private Sub cmd_mal_Click(Index As Integer)
zahl1 = tf_oben
operator = "3"
tf_oben.Text = Clear
tf_oben.Tag = ""
End Sub

Private Sub cmd_minus_Click(Index As Integer)
zahl1 = tf_oben
operator = "2"
tf_oben.Text = Clear
tf_oben.Tag = ""
End Sub

Private Sub cmd_neun_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "9"
End Sub

Private Sub cmd_null_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "0"
End Sub

Private Sub cmd_plus_Click(Index As Integer)
zahl1 = tf_oben
operator = "1"
tf_oben.Text = Clear
tf_oben.Tag = ""
End Sub

Private Sub cmd_sechs_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "6"
End Sub

Private Sub cmd_sieben_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "7"
End Sub

Private Sub cmd_vier_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "4"
End Sub

Private Sub cmd_wechsel_Click(Index As Integer)
tf_oben.Text = "-" & tf_oben.Text
End Sub

Private Sub cmd_zwei_Click(Index As Integer)
tf_oben.Text = tf_oben.Text & "2"
End Sub



MfG Jaschiii
 
Für das Vorzeichen must du bei dem einen Sub (cmd_wechsel_Click) prüfen, ob das Vorzeichen schon vorhanden ist oder nicht:

Code:
Private Sub cmd_wechsel_Click(Index As Integer)
   If Left$(tf_oben.Text, 1) = "-" Then
      tf_oben.Text = Mid$(tf_oben.Text, 2)
   Else
      tf_oben.Text = "-" & tf_oben.Text
   End If
End Sub

Und was für ein Problem hast du noch bei dem Komma?

Schaut doch ganz ok aus, oder?


mfG,
MAN
 
Zuletzt bearbeitet:
Also was komma rechnung angeht wuerde ich mal vorschlage
keine Ineger Variablen zu nutzen sondern Variant weil dann klaps auch mit dem komma ;)
oder alternativ real...

integer kann nur mit ganzen zahlen von -65k bis +65k ...
 
Ja danke man für deine Antwort. Ich habe mir das dann aber auch überlegt wie es Mathematisch gehen müsste. Das man ja eine Zahl nur *(-1) nehmen muss damit sie negativ/positiv werden muss. Das sah dann so aus:

Code:
   Private Sub cmd_wechsel_Click(Index As Integer)
   tf_oben.Text = (-1) * Val(tf_oben.Text)
   End Sub

Das mit dem Kommer meinte ich wie man das in der Rechnung schreibt. Ich weiß das man dort kein Integer benutzen kann, aber ich wüsste jetzt nicht was ich sonst nehmen sollte. Ich habe mal Variant eingesetzt so wie es FTUK geschrieben hat. Doch damit bin ich nicht sehr viel weitergekommen.



MfG Jaschiii
 
Also du kannst schon komma zahlen eingeben "Ja" ?

und willst die hiermit rechnen
End If
If operator = "4" Then
tf_oben.Text = zahl1 / zahl2
End If
dann brauchst du Real zahlen oder eben Variant soweit ich weiss
da in der hilfe steht

The Variant data type is the data type for all variables that are not explicitly declared as some other type (using statements such as Dim, Private, Public, or Static). The Variant data type has no type-declaration character.
tja und dann muesste er es eigendlich rechnen .. ansonsten habe ich auch kein Plan

----------------
 
Ne sorry das:

Code:
 			 				 End If
   If operator = "4" Then
   tf_oben.Text = zahl1 / zahl2
   End If

ist der Teil wo das Programm eine Division macht.

ja Kommerzahlen kann ich schon eingeben. Nur weiß ich nicht wie ich das alles schreiben soll. Da darf man ja kein Integer benutzen sonst klappt das nicht.

MfG Jaschiii
 
Zuletzt bearbeitet:
wieso nutzt du nicht einfach Boolean Variablen Das macht doch die ganze sache einfacher.

die eintzelnen ausgaben kannst du mit dem Befehl "cdbl" umwandeln.
Bsp.:

Zahl1 = CdBl(text1.text)
Zahl2 = cdBl(text2.text)
label1.caption = zahl1+zahl2
 
Zurück