Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

vb Taschenrechner

Frage Entwicklung VB for Applications

Mitglied: Kleina

Kleina (Level 1) - Jetzt verbinden

13.10.2009 um 09:00 Uhr, 4466 Aufrufe, 19 Kommentare

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

01.
Dim zahl As Integer 
02.
Dim erg As Integer 
03.
Dim rechnung As String 
04.
 
05.
 
06.
Private Sub button_gleich_Click() 
07.
'If rechnung = "subtrahieren" Then erg = Text - zahl 
08.
If rechnung = "addieren" Then erg = Text + zahl 
09.
Display.Text = (erg) 
10.
End Sub 
11.
 
12.
Private Sub button_loeschen_Click() 
13.
Display.Text = "" 
14.
End Sub 
15.
 
16.
Private Sub button_minus_Click() 
17.
rechnug = "subtrahieren" 
18.
'Display.Text = "" 
19.
End Sub 
20.
 
21.
Private Sub button_nr0_Click() 
22.
Text = Text + "0" 
23.
Display.Text = (Text) 
24.
End Sub 
25.
 
26.
Private Sub button_nr1_Click() 
27.
Text = Text + "1" 
28.
Display.Text = (Text) 
29.
End Sub 
30.
 
31.
Private Sub button_nr2_Click() 
32.
Text = Text + "2" 
33.
Display.Text = (Text) 
34.
End Sub 
35.
 
36.
Private Sub button_nr3_Click() 
37.
Text = Text + "3" 
38.
Display.Text = (Text) 
39.
End Sub 
40.
 
41.
Private Sub button_nr4_Click() 
42.
Text = Text + "4" 
43.
Display.Text = (Text) 
44.
End Sub 
45.
 
46.
Private Sub button_nr5_Click() 
47.
Text = Text + "5" 
48.
Display.Text = (Text) 
49.
End Sub 
50.
 
51.
Private Sub button_nr6_Click() 
52.
Text = Text + "6" 
53.
Display.Text = (Text) 
54.
End Sub 
55.
 
56.
Private Sub button_nr7_Click() 
57.
Text = Text + "7" 
58.
Display.Text = (Text) 
59.
End Sub 
60.
 
61.
Private Sub button_nr8_Click() 
62.
Text = Text + "8" 
63.
Display.Text = (Text) 
64.
End Sub 
65.
 
66.
Private Sub button_nr9_Click() 
67.
Text = Text + "9" 
68.
Display.Text = (Text) 
69.
End Sub 
70.
 
71.
Private Sub button_plus_Click() 
72.
Text = zahl 
73.
rechnung = "addieren" 
74.
Display.Text = "" 
75.
End Sub
Mitglied: dog
13.10.2009 um 10:30 Uhr
Mal abgesehen davon, dass die einzige Arithmetik in dieser Zeile steckt:

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
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 10:36 Uhr
ja hab ich auch schon bemerkt...hab ich wohl übersehn
hab das jez soweit hinbekommen das wenigsten das addieren funktioniert...jedoch beim subtrahieren ist das ergebnis wieder "0"


01.
Dim zahl As Integer 
02.
Dim zahl2 As Integer 
03.
Dim erg As Integer 
04.
Dim rechnung As String 
05.
 
06.
 
07.
Private Sub button_gleich_Click() 
08.
If rechnung = "subtrahieren" Then erg = zahl2 - zahl 
09.
If rechnung = "addieren" Then erg = zahl + zahl2 
10.
Display.Text = (erg) 
11.
End Sub 
12.
 
13.
Private Sub button_loeschen_Click() 
14.
Display.Text = "" 
15.
End Sub 
16.
 
17.
Private Sub button_minus_Click() 
18.
zahl = zahl2 
19.
rechnug = "subtrahieren" 
20.
Display.Text = "" 
21.
End Sub 
22.
 
23.
Private Sub button_nr0_Click() 
24.
zahl = 0 
25.
Display.Text = (zahl) 
26.
End Sub 
27.
 
28.
Private Sub button_nr1_Click() 
29.
zahl = 1 
30.
Display.Text = (zahl) 
31.
End Sub 
32.
 
33.
Private Sub button_nr2_Click() 
34.
zahl = 2 
35.
Display.Text = (zahl) 
36.
End Sub 
37.
 
38.
Private Sub button_nr3_Click() 
39.
zahl = 3 
40.
Display.Text = (zahl) 
41.
End Sub 
42.
 
43.
Private Sub button_nr4_Click() 
44.
zahl = 4 
45.
Display.Text = (zahl) 
46.
End Sub 
47.
 
48.
Private Sub button_nr5_Click() 
49.
zahl = 5 
50.
Display.Text = (zahl) 
51.
End Sub 
52.
 
53.
Private Sub button_nr6_Click() 
54.
zahl = 6 
55.
Display.Text = (zahl) 
56.
End Sub 
57.
 
58.
Private Sub button_nr7_Click() 
59.
zahl = 7 
60.
Display.Text = (zahl) 
61.
End Sub 
62.
 
63.
Private Sub button_nr8_Click() 
64.
zahl = 8 
65.
Display.Text = (zahl) 
66.
End Sub 
67.
 
68.
Private Sub button_nr9_Click() 
69.
zahl = 9 
70.
Display.Text = (zahl) 
71.
End Sub 
72.
 
73.
Private Sub button_plus_Click() 
74.
zahl2 = zahl 
75.
rechnung = "addieren" 
76.
Display.Text = "" 
77.
End Sub 
78.
 
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 10:53 Uhr
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??
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 14:12 Uhr
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??

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
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 14:29 Uhr
naja es geht nicht um das ergebnis..
ich beschreib das problem am besten etwas genauer.
also..
ich habe verschiedene button gemacht von 0-9..
wenn ich zb die 1 drücke erscheint sie im display(textfeld)..so weit so gut..
aber wenn ich eine 11 da drin haben möchte funktioniert das nicht..woran könnte das liegen??
hab bis jetzt noch keine lösung dafür gefunden..


@Tommy70: aber trotzdem danke für diesen kleinen tipp..hätte mich besser ausdrücken sollen
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 14:41 Uhr
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.

01.
Private Sub button_nr1_Click()  
02.
zahl =  1  
03.
if Display.Text="0" then 
04.
Display.Text = cstr(zahl)  
05.
else 
06.
Display.Text =Display.Text &  cstr(zahl)  
07.
End If 
08.
End Sub 
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 14:55 Uhr
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.

01.
Private Sub cmdZahl_Click(Index As Integer) 
02.
If Display.Text = "0" Then 
03.
  Display.Text = CStr(Index) 
04.
Else 
05.
  Display.Text = Display.Text & CStr(Index) 
06.
End If 
07.
End Sub
Gruß
Tom
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 14:57 Uhr
danke so weit klappt das ...
nur noch ein problem..und zwar wenn ich 11+ 55 rechnen lasse kommt "6" raus..
als wenn ich 1+5 machen würde..
woran liegt das??
sry bin ein totaler anfänger was vb angeht..
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 15:11 Uhr
Weil du nur mit Zahl und Zahl2 rechnest und nicht mit den Werten die du ins textfeld eingegeben hast. Und da steht dann eben nur 1 + 5 drinnen.
Du musst dir den Wert aus dem Textfeld zwischenspeichern bevor du + oder - drückst.
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 15:19 Uhr
ja klar..aba die zahl kommt doch per drücken der buttons ins textfeld..wie mache ich das denn das er genau diesen wert da rausliest und zwischenspeichert??
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 15:22 Uhr
Indem du dir diesen Wert bevor du + oder Minus drückst in eine Variable schreibst.
z.bsp.
01.
Dim itmpZahl as integer 
02.
 
03.
Private Sub button_plus_Click()  
04.
itmpZahl =cint(Display.Text) 
05.
rechnung = "addieren"  
06.
Display.Text = "0"  
07.
End Sub 
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 15:29 Uhr
Dann noch schnell das Rechnen ;)

01.
Private Sub button_gleich_Click()  
02.
If rechnung = "subtrahieren" Then erg = itmpZahl - cint(Display.Text) 
03.
If rechnung = "addieren" Then erg = itmpZahl + cint(Display.Text) 
04.
Display.Text = cstr(erg)  
05.
End Sub 
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 15:32 Uhr
ok das "cint" steht für das auslesen aus dem textfeld richtig?
das heißt ich könnte das gleich auch für zahl2 anwenden..da dies ja der zweite wert ist den ich eingebe....beim "+" drücken leert sich ja das textfeld..und das müsste ich dann nur noch beim button"gleich" ändern das er diese 2 werte addiert..oder welche rechenoperation auch immer...
bin ich da auf dem richtigen weg??
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 15:47 Uhr
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.

01.
Dim itmpZahl as integer 
02.
 
03.
Private Sub button_plus_Click()  
04.
rechnung = "addieren"  
05.
if itmpZahl = 0 then 
06.
itmpZahl =cint(Display.Text) 
07.
else 
08.
button_gleich 
09.
itmpZahl =cint(Display.Text) 
10.
end if 
11.
End Sub  
12.
 
13.
Private Sub button_minus_Click()  
14.
rechnung="subtrahieren" 
15.
if itmpZahl = 0 then 
16.
itmpZahl =cint(Display.Text) 
17.
else 
18.
button_gleich 
19.
itmpZahl =cint(Display.Text) 
20.
end if 
21.
End Sub  
22.
 
23.
Private Sub button_gleich_Click()  
24.
If rechnung = "subtrahieren" Then erg = itmpZahl - cint(Display.Text) 
25.
If rechnung = "addieren" Then erg = itmpZahl + cint(Display.Text) 
26.
Display.Text = cstr(erg)  
27.
End Sub 
Habe das jetzt nicht getestet. Aber so ähnlich sollte es funktionieren.
Bitte warten ..
Mitglied: Kleina
13.10.2009 um 16:05 Uhr
funktioniert nicht ganz..aber ich hab das prinzip verstanden...
ich versuche noch einmal selber darauf zu kommen..
wenn ich nicht mehr weiter komme schreib ich wieder..
danke erstmal für diese hilfreichen tipps!!

;)
Bitte warten ..
Mitglied: Tommy70
13.10.2009 um 16:27 Uhr
Hier noch eine etwas korrigierte Version. Funktioniert zwar auch noch nicht 100%ig. Aber da solltest du jetzt weiterkommen.

01.
Dim itmpZahl As Integer 
02.
Dim bEingabe As Boolean 
03.
Dim rechnung As String 
04.
 
05.
Private Sub button_plus_Click() 
06.
rechnung = "addieren" 
07.
If itmpZahl = 0 Then 
08.
  itmpZahl = CInt(Display.Text) 
09.
Else 
10.
  button_gleich_Click 
11.
  itmpZahl = CInt(Display.Text) 
12.
End If 
13.
Display.Text = CStr(itmpZahl) 
14.
bEingabe = False 
15.
End Sub 
16.
 
17.
Private Sub button_minus_Click() 
18.
rechnung = "subtrahieren" 
19.
If itmpZahl = 0 Then 
20.
  itmpZahl = CInt(Display.Text) 
21.
Else 
22.
  button_gleich_Click 
23.
  itmpZahl = CInt(Display.Text) 
24.
End If 
25.
Display.Text = CStr(itmpZahl) 
26.
bEingabe = False 
27.
End Sub 
28.
 
29.
Private Sub button_gleich_Click() 
30.
Dim erg As Integer 
31.
If rechnung = "subtrahieren" Then erg = itmpZahl - CInt(Display.Text) 
32.
If rechnung = "addieren" Then erg = itmpZahl + CInt(Display.Text) 
33.
Display.Text = CStr(erg) 
34.
bEingabe = False 
35.
End Sub
Bitte warten ..
Mitglied: Kleina
14.10.2009 um 10:43 Uhr
soo habe mein taschenrechner soweit das er die grundrechen arten kann..
aber wie mache ich das ich dezimalzahlen ins display bekomme, wobei der button "." benutzt werden soll..
und das das ergebnis auch als dezimalzahl dargestellt werden kann?? zB. "1.2"
Bitte warten ..
Mitglied: Tommy70
14.10.2009 um 11:08 Uhr
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
Bitte warten ..
Mitglied: Kleina
19.10.2009 um 10:25 Uhr
soo habe alles hinbekommen..
ich danke für die vielen hilfreichen tipps..
ohne die wäre ich aufgeschmissen =)
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Visual Studio
gelöst (VB) Form-Elemente nicht wie im Entwurf angeordnet (2)

Frage von MrCount zum Thema Visual Studio ...

Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...