# Kommarechnung beim Taschenrechner



## Jaschiii (28. November 2004)

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


----------



## MAN (29. November 2004)

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


```
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


----------



## FTUK (29. November 2004)

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 ...


----------



## Jaschiii (29. November 2004)

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:


```
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


----------



## FTUK (29. November 2004)

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

----------------


----------



## Jaschiii (29. November 2004)

Ne sorry das:


```
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


----------



## NetWorker049 (2. Dezember 2004)

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


----------



## Jaschiii (6. Dezember 2004)

jo danke schön hat geklappt


----------

