vb Taschenrechner
hey Leute ,
bin gerade dabei ein Taschenrechner in VB zu programmieren..
hab jedoch ein kleines problem...wieso ist das ergebnis was herauskommt immer "0"?
hoffe ihr könnt mir da weiter helfen
danke schon mal im vorraus
bin gerade dabei ein Taschenrechner in VB zu programmieren..
hab jedoch ein kleines problem...wieso ist das ergebnis was herauskommt immer "0"?
hoffe ihr könnt mir da weiter helfen
danke schon mal im vorraus
Dim zahl As Integer
Dim erg As Integer
Dim rechnung As String
Private Sub button_gleich_Click()
'If rechnung = "subtrahieren" Then erg = Text - zahl
If rechnung = "addieren" Then erg = Text + zahl
Display.Text = (erg)
End Sub
Private Sub button_loeschen_Click()
Display.Text = ""
End Sub
Private Sub button_minus_Click()
rechnug = "subtrahieren"
'Display.Text = ""
End Sub
Private Sub button_nr0_Click()
Text = Text + "0"
Display.Text = (Text)
End Sub
Private Sub button_nr1_Click()
Text = Text + "1"
Display.Text = (Text)
End Sub
Private Sub button_nr2_Click()
Text = Text + "2"
Display.Text = (Text)
End Sub
Private Sub button_nr3_Click()
Text = Text + "3"
Display.Text = (Text)
End Sub
Private Sub button_nr4_Click()
Text = Text + "4"
Display.Text = (Text)
End Sub
Private Sub button_nr5_Click()
Text = Text + "5"
Display.Text = (Text)
End Sub
Private Sub button_nr6_Click()
Text = Text + "6"
Display.Text = (Text)
End Sub
Private Sub button_nr7_Click()
Text = Text + "7"
Display.Text = (Text)
End Sub
Private Sub button_nr8_Click()
Text = Text + "8"
Display.Text = (Text)
End Sub
Private Sub button_nr9_Click()
Text = Text + "9"
Display.Text = (Text)
End Sub
Private Sub button_plus_Click()
Text = zahl
rechnung = "addieren"
Display.Text = ""
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126972
Url: https://administrator.de/forum/vb-taschenrechner-126972.html
Ausgedruckt am: 22.12.2024 um 23:12 Uhr
19 Kommentare
Neuester Kommentar
Mal abgesehen davon, dass die einzige Arithmetik in dieser Zeile steckt:
Ist die auch noch falsch
Es gibt innerhalb dieser Funktion kein Objekt Text (und wenn doch hast du vergessen es oben zu deklarieren).
Außerdem arbeitest du mit Text immer als wäre es ein String, dann musst du zum Rechnen auch ein Int draus machen:
VB6: CInt()
VB.Net: Int32.Parse()
Grüße
Max
If rechnung = "addieren" Then erg = Text + zahl
Ist die auch noch falsch
Es gibt innerhalb dieser Funktion kein Objekt Text (und wenn doch hast du vergessen es oben zu deklarieren).
Außerdem arbeitest du mit Text immer als wäre es ein String, dann musst du zum Rechnen auch ein Int draus machen:
VB6: CInt()
VB.Net: Int32.Parse()
Grüße
Max
Zitat von @Kleina:
soo hab soweit alles hinbekommen...hätte da nur noch die frage
wie ich es hinbekomme das 2 ziffern im display von meinem rechner
stehen??
soo hab soweit alles hinbekommen...hätte da nur noch die frage
wie ich es hinbekomme das 2 ziffern im display von meinem rechner
stehen??
Hallo
Wenn ich dich richtig verstehe willst du auch wenn das Ergebnis z.Bsp. nur 5 ist 05 im Display stehen haben.
Das geht in VB6 mit
Display.Text = Format(erg, "00")
Gruß
Tom
Weil du den Text entsprechend zusammensetzen musst.
z.Bsp.
Man kann das ganze auch schöner lösen. Habe es hier allerdings an deinen Quellcode angepasst.
z.Bsp.
Man kann das ganze auch schöner lösen. Habe es hier allerdings an deinen Quellcode angepasst.
Private Sub button_nr1_Click()
zahl = 1
if Display.Text="0" then
Display.Text = cstr(zahl)
else
Display.Text =Display.Text & cstr(zahl)
End If
End Sub
Die oben erwähnte schönere Lösung wäre folgende.
Ich bleibe mal bei meiner Vermutung dass du VB6 verwendest. ;)
Du erstellst einen Button, gibst ihm einen Namen (in meinem Fall cmdZahl).
Dann kopierst diesen und fügst ihn erneut auf dem Formular ein. (Bei der Frage "Ob du ein Steuerelementefeld erstellen willst" sagst du ja.)
Das machst du bis du alle 10 Buttons (0-9) hast.
Dann fügst du folgenden Code in das Click-Ereignis des Buttons ein.
Gruß
Tom
Ich bleibe mal bei meiner Vermutung dass du VB6 verwendest. ;)
Du erstellst einen Button, gibst ihm einen Namen (in meinem Fall cmdZahl).
Dann kopierst diesen und fügst ihn erneut auf dem Formular ein. (Bei der Frage "Ob du ein Steuerelementefeld erstellen willst" sagst du ja.)
Das machst du bis du alle 10 Buttons (0-9) hast.
Dann fügst du folgenden Code in das Click-Ereignis des Buttons ein.
Private Sub cmdZahl_Click(Index As Integer)
If Display.Text = "0" Then
Display.Text = CStr(Index)
Else
Display.Text = Display.Text & CStr(Index)
End If
End Sub
Gruß
Tom
Das cInt steht dafür, einen String in einen Integer umzuwandeln da du ja mit Strings nicht rechnen kannst.
Normal brauchst du deine 2 Variablen Zahl und Zahl2 nicht mehr. Da du immer wenn du +, - oder = drückst sofort rechnen solltest.
Habe das jetzt nicht getestet. Aber so ähnlich sollte es funktionieren.
Normal brauchst du deine 2 Variablen Zahl und Zahl2 nicht mehr. Da du immer wenn du +, - oder = drückst sofort rechnen solltest.
Dim itmpZahl as integer
Private Sub button_plus_Click()
rechnung = "addieren"
if itmpZahl = 0 then
itmpZahl =cint(Display.Text)
else
button_gleich
itmpZahl =cint(Display.Text)
end if
End Sub
Private Sub button_minus_Click()
rechnung="subtrahieren"
if itmpZahl = 0 then
itmpZahl =cint(Display.Text)
else
button_gleich
itmpZahl =cint(Display.Text)
end if
End Sub
Private Sub button_gleich_Click()
If rechnung = "subtrahieren" Then erg = itmpZahl - cint(Display.Text)
If rechnung = "addieren" Then erg = itmpZahl + cint(Display.Text)
Display.Text = cstr(erg)
End Sub
Habe das jetzt nicht getestet. Aber so ähnlich sollte es funktionieren.
Hier noch eine etwas korrigierte Version. Funktioniert zwar auch noch nicht 100%ig. Aber da solltest du jetzt weiterkommen.
Dim itmpZahl As Integer
Dim bEingabe As Boolean
Dim rechnung As String
Private Sub button_plus_Click()
rechnung = "addieren"
If itmpZahl = 0 Then
itmpZahl = CInt(Display.Text)
Else
button_gleich_Click
itmpZahl = CInt(Display.Text)
End If
Display.Text = CStr(itmpZahl)
bEingabe = False
End Sub
Private Sub button_minus_Click()
rechnung = "subtrahieren"
If itmpZahl = 0 Then
itmpZahl = CInt(Display.Text)
Else
button_gleich_Click
itmpZahl = CInt(Display.Text)
End If
Display.Text = CStr(itmpZahl)
bEingabe = False
End Sub
Private Sub button_gleich_Click()
Dim erg As Integer
If rechnung = "subtrahieren" Then erg = itmpZahl - CInt(Display.Text)
If rechnung = "addieren" Then erg = itmpZahl + CInt(Display.Text)
Display.Text = CStr(erg)
bEingabe = False
End Sub
Hallo,
wieso dachte ich mir gestern schon dass das bald kommen wird? ;)
Da fängt es dann schon mal damit an, dass du keine Integer-Variablen mehr verwenden kannst sondern auf Double umsteigen musst.
Datentypen in VB6
Allerdings bist du mit Double auch eingeschränkt, da auch dort nur Zahlen bis zu einer gewissen Größe möglich sind.
Willst du Zahlen beliebiger Länge berechnen können musst du dir eine eigene Rechenroutine schreiben. Das würde dann allerdings für dich sicher zu weit führen.
Wenn du das ganze also wirklich vertiefen willst, dann ist dir sicher am meisten geholfen wenn du dir z.Bsp. bei Google ein Beispiel suchst.
Ein ziemlich gut dokumentiertes Projekt findest du unter http://www.activevb.de/cgi-bin/upload/download.pl?id=786
Gruß
Tom
wieso dachte ich mir gestern schon dass das bald kommen wird? ;)
Da fängt es dann schon mal damit an, dass du keine Integer-Variablen mehr verwenden kannst sondern auf Double umsteigen musst.
Datentypen in VB6
Allerdings bist du mit Double auch eingeschränkt, da auch dort nur Zahlen bis zu einer gewissen Größe möglich sind.
Willst du Zahlen beliebiger Länge berechnen können musst du dir eine eigene Rechenroutine schreiben. Das würde dann allerdings für dich sicher zu weit führen.
Wenn du das ganze also wirklich vertiefen willst, dann ist dir sicher am meisten geholfen wenn du dir z.Bsp. bei Google ein Beispiel suchst.
Ein ziemlich gut dokumentiertes Projekt findest du unter http://www.activevb.de/cgi-bin/upload/download.pl?id=786
Gruß
Tom