BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- VB - einfacher Taschnerrechner (http://www.black-board.net/thread.php?threadid=12420)


Geschrieben von Prof.Dr.Eck am 11.06.2003 um 15:20:

Lampe VB - einfacher Taschnerrechner

Hallo,
ich bin auf die Idee gekommen mir nen kleinen Rechner zu coden... nur so zur Übung:
Jetzt: Es gibt nen Plus-Button "Plus" habe ich ihn genannt.
Hier ist mal der Source:

Dim Ergebnis As String
Dim Wert As String
Dim Wert2 As String
Wert = Eingabe1.Text
Wert2 = Eingabe2.Text
Ergebnis = Eingabe1 + Eingabe2
Anzeige.Caption = Ergebnis

So... wie man deutkich sieht werden Wert1 und Wert2 addiert.
Nur wenn ich z.B. in Eingabefeld 1 eingebe und in Eingabefeld 2 eingebe kommt als Ergebnis: 12
So nun meine Frage: Wie sollte der Source aussehen dass 3 rauskommt ??
Ich hab auch Dim Ergebnis As Doble, Integer, Single,
fast alle. Es kann natürlich auch sein dass ich nicht alle probiert habe die es gibt da ich erst Anfänger bin auf den Gebiet:
Hier mal alle die ich kenne bitte sagen wenn etwas fehlt:
Integer, Single, Double, String, Long, Byte, Boolean,
Date, Currency, Variant.
Wenn zufällig das fehlt was ich für mein Problem (siehe Oben) BITTE posten!
Danke

Mfg
Prof.Dr.eck



Geschrieben von phlox81 am 11.06.2003 um 15:24:

 

du liest wohl das als String ein. versuch mal den String
in Integer zu casten (falls das in VB geht *duck*),
und such mal bei google nach 'VB String in integer"

Devil



Geschrieben von Prof.Dr.Eck am 11.06.2003 um 15:44:

 

Tut mir leid aber das sagt mir grade nichts.
Ich nehme mal an dass es daran liegt dass String Zahlen sind und keine Ziffern.
Gibts etwas für Ziffern ?



Geschrieben von Compuholic am 11.06.2003 um 16:48:

 

1. String = Zeichenkette
Intern wird das so gelöst, daß die Variable ein Zeiger auf die Speicheradresse ist an der der String beginnt. Das Ende des Strings ist meist durch ein NULL-Byte (0x00) gekennzeichnet. Visual Basic versteckt allerdings diesen Umstand vor Dir. Das man damit nicht rechnen kann, dürfte klar sein.

2. Integer = vorzeichenbehaftete Zahl
Ist auf den meisten Plattform 32-Bit breit. Die Zahlen werden einfach binär hier abgelegt. Mit diesem Variablentyp kann man problemlos rechnen. Allerdings kannst du hier keine Zeichen eingeben.

Es gibt allerdings Routinen, die beiden Datentypen konvertieren können. Wie das bei VB genau geht, weiß ich leider nicht. Das ist genau der Grund warum ich VB nicht mag. Es ist einfach nicht transparent genug.



Geschrieben von Prof.Dr.Eck am 11.06.2003 um 17:10:

 

... soll das heissen dass man in Visual Basic nicht einmal einen ganz einfach Taschenrechner coden kann ?
Das ist ja richtig BILLIG !



Geschrieben von Compuholic am 11.06.2003 um 17:11:

 

Doch natürlich kann man das.
Du mußt nur darauf achten, mit welchem Variablentyp Du arbeitest. Mit einer Zeichenkette kann der Prozessor nicht rechnen. Also mußt Du sie in eine Integer-Zahl umwandeln.

[edit]
Deklariere einfach Wert1 und Wert2 als Variant. Ich glaube VisualBasic rechnet automatisch um.



Geschrieben von Alex am 11.06.2003 um 17:57:

 

Mit String kannst du natürlich nicht rechnen.

Setze die Variablen einfach auf double (Mit Kommastellen)
Also so hier:
Dim Wert1, Wert2 as double

Wenn du Integer nimmst, kannst du nur mit Ganzzahlen rechnen.



Geschrieben von Prof.Dr.Eck am 11.06.2003 um 18:45:

 

unglücklich unglücklich unglücklich
Tja... funtkioniert nicht.
2 + 2 gibt da 22!

Also hier ist jetzt mal der komplette Source:


Private Sub Command1_Click()

End Sub

Private Sub Divi_Click()
Dim Ergebnis As String
Dim Wert As String
Dim Wert2 As String
Wert = Eingabe1.Text
Wert2 = Eingabe2.Text
Ergebnis = Eingabe1 / Eingabe2
Anzeige.Caption = Ergebnis
End Sub

Private Sub Mal_Click()
Dim Ergebnis As String
Dim Wert As String
Dim Wert2 As String
Wert = Eingabe1.Text
Wert2 = Eingabe2.Text
Ergebnis = Eingabe1 * Eingabe2
Anzeige.Caption = Ergebnis
End Sub

Private Sub Minus_Click()
Dim Ergebnis As String
Dim Wert As String
Dim Wert2 As String
Wert = Eingabe1.Text
Wert2 = Eingabe2.Text
Ergebnis = Eingabe1 - Eingabe2
Anzeige.Caption = Ergebnis
End Sub

Private Sub Plus_Click()
Dim Ergebnis As String
Dim Wert As Variant
Dim Wert2 As Variant
Wert = Eingabe1.Text
Wert2 = Eingabe2.Text
Ergebnis = Eingabe1 + Eingabe2
Anzeige.Caption = Ergebnis
End Sub


Nun die anderen Funktionen funzen alle bis auf das letzte: Plus!

Danke

Mfg
Prof.Dr.eck



Geschrieben von CDW am 11.06.2003 um 19:06:

 

Zitat:
Dim Ergebnis As String
Dim Wert As String
Dim Wert2 As String

ähm, wie alex schon sagte, auf double setzen... denn was du versuchts ist gerade mit Zeichenketten zu rechnen Augen rollen ... und bei Plus
ist die standardoperation bei Text "verbinden", das heißt, wenn du 'a' und 'b' angibst, bekommst du 'ab' raus... da ist nix falsches dran - die "Ziffern" werden als Zeichen behandelt und mit ihnen wird auch nicht gerechnet... die anderen funktionen dürften auch nicht richtig funktionieren, aber VB war für mich immer schon ein Geheimniss Augenzwinkern
PS: ein guter Taschenrechner(statt des Winstandards):
http://spiff.tripnet.se/~iczelion/files/EWCalc.zip
geschreieben in "richtiger" Sprache Augenzwinkern



Geschrieben von Medusa am 11.06.2003 um 19:24:

 

oder du Dimst gar nichts, und sagst einfach:

code:
1:
Ergebnis=cdbl(Eingabe1.text)+cdbl(Eingabe2.text)


Mit der Funktion cdbl([string]) wandelt man einen string in eine Zahl (typ double) um.
wenn dein Textfeld den String "10" enthält, dann kann man damit nicht rechnen. Erst wenn man ihn in einen Zahlen-Typ umwandelt.
Infos über die verschiedenen Typen findest du betimmt bei google.

Single: csng()
Long: clng()
Double: cdbl()
Integer: cint()

Als Parameter muss eben der String übergeben werden. Umgekehrt lässt sich das mit cstr() wieder in einen String wandeln.



Geschrieben von Prof.Dr.Eck am 11.06.2003 um 20:33:

 

@CDW
Danke erstamal.

@Medusa,
DANKE, schon wieder großes Grinsen
Dein Code:
Ergebnis=cdbl(Eingabe1.text)+cdbl(Eingabe2.text)

Mit dem hat's geklappt VIELEN VIELEN DANKE!

Mfg
Prof.Dr.eck



Geschrieben von fibby am 10.07.2003 um 18:40:

 

Hey Leute,

ich hab grad mal so zufällig hier herein gesehen und ich muss schon sagen ....( hab mir auch nicht alles durchgelesen großes Grinsen ) aber ich hab bemerkt dass keiner von euch auf die Idee gekommen ist nicht einfach den Wert1 mit dem Wert2 zu addieren, sub. oder wie auch immer!

Private Sub Plus_Click()

Dim Ergebnis As String
Dim Wert As Variant
Dim Wert2 As Variant
Wert = Eingabe1.Text
Wert2 = Eingabe2.Text
Ergebnis = Wert + Wert2
Anzeige.Caption = Ergebnis
End Sub

also so z.B ....ich denk schon dass das einwandfrei funktionieren sollte.

Augenzwinkern Freude



Geschrieben von Compuholic am 10.07.2003 um 19:53:

 

Du hast "Wert" und "Wert2" als Variant deklariert. Damit könnte es natürlich funktionieren. Diese Lösung hab ich oben auch schon vorgeschlagen, war mir aber nicht sicher, weil ich mich mit VisualBasic nicht auskenne.
Das Problem lag vielmehr darin, das er die beiden Variablen als String deklariert hat. Und damit ist es nicht möglich zu rechnen. Ich vermute mal der + Operator dient hier einfach dazu, daß ein String an den 2. angehängt werden soll.



Geschrieben von Medusa am 11.07.2003 um 10:06:

 

Zitat:
Original von Compuholic
Ich vermute mal der + Operator dient hier einfach dazu, daß ein String an den 2. angehängt werden soll.

richtig Augenzwinkern
Ich verwende aber immer den & Operator, weil damit alle Typen angehängt werden können.



Geschrieben von fibby am 11.07.2003 um 10:30:

 

ok ok, schon gut sorry!

Aber ich finde ein Taschenrechner sollte aus 2 + 2 ... 4 machen und nicht 22 aber egal, für mich etwas unlogisch, aber wie ihr wollt !!!

cya



Geschrieben von phlox81 am 11.07.2003 um 14:09:

 

Zitat:
Original von fibby
ok ok, schon gut sorry!

Aber ich finde ein Taschenrechner sollte aus 2 + 2 ... 4 machen und nicht 22 aber egal, für mich etwas unlogisch, aber wie ihr wollt !!!


tststs.
Natürlich muss 2 + 2 = 22 sein.
Sonst bräuchte man ja keine Hochsprachen wie VB...

Devil



Geschrieben von Deef am 11.07.2003 um 14:32:

 

Versuch mal die beiden Werte vor dem addieren mit 1 zu multiplizieren. Das ist ein Trick, der mit in JavaScript schonmal geholfen hat Augenzwinkern



Geschrieben von Zmaster am 11.07.2003 um 22:15:

Achtung casten

Ich bin schon ein kleiner Freund von VBA (ein kleines Script in Sekundenschnelle), aber ich habe bis jetzt immer den Typ Variant vermieden. Das liegt daran, dass man den Computer entscheiden lässt, was er damit macht. Zahl oder String? Der Programmierer muss hoffen.
Daher kann ich nur empfehlen mit der Funktion CInt(String) den Wert in eine Integer Variable zu speichern. Das ist die schnellste und sicherste Lösung. Man brauch dann auch keine extra String Variable zum zwischenspeichern. Schließlich will man rechnen und nicht damit rumspielen.

Private Sub Plus_Click()
Anzeige.Caption = CDbl(Eingabe1.Text) + CDbl(Eingabe2.Text)
End Sub


Gruß
zmaster


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH