Einfach Rechnen

Hallo Liebe All Wissende User

Ich bin wieder am basteln und habe ein Problem:

VB.Net 2008

Mithilfe von:

auslesen = WebBrowser1.Document.Body.OuterText

Speicher ich mir einen Wert in der Variable asulesen.

In Textbox3 habe ich auch einen Wert.

vorhanden = TextBox3.Text

Nun adiere ich beide werte:

ergebnis = auslesen + vorhanden

Geht auch solange ich keine Dezimal Zahlen habe also: 5.48 oder so.

ich habe schon folgendes probiert:

Dim auslesen As Integer
Dim vorhanden As Integer
Dim ergebnis As Integer

auslesen = WebBrowser1.Document.Body.OuterText
vorhanden = TextBox3.Text

ergebnis = auslesen + vorhanden

Dim auslesen As Long
Dim vorhanden As Long
Dim ergebnis As Long

auslesen = WebBrowser1.Document.Body.OuterText
vorhanden = TextBox3.Text

ergebnis = auslesen + vorhanden

Dim auslesen As Integer
Dim vorhanden As Integer
Dim ergebnis As Integer

auslesen = Format(WebBrowser1.Document.Body.OuterText, „Currency“)
vorhanden = Format(TextBox3.Text, „Currency“)

ergebnis = auslesen + vorhanden

> ich habe die Werte dann immer noch nach jedem Schritt kontrolliert, hier war das die zu adierenden Werte das Format hatten: 15,86 € richtig nett da ich es im Enefeckt so haben will.

Dann der Schlag ins Gesicht: ergebnis = 25680 da hat der die
2,5 + 6,8 = 2568 Wahnsinn :smile:

Dann hab ich folgendes Probiert:

Dim auslesen As Integer
Dim vorhanden As Integer
Dim ergebnis As Integer

auslesen = Format(WebBrowser1.Document.Body.OuterText, „Currency“)
vorhanden = Format(TextBox3.Text, „Currency“)

ergebnis = CStr(CDbl(auslesen) + CDbl(vorhanden))

Die Funktion CDbl sorgt ja dafür das die Kommas akzeptiert werden.

ergebnis jedoch war wieder 25680

Ich weis nicht mehr weiter.

Wie kann ich Dezimalwerte in Variblen zusammen rechen???

Ich denke das liegt alles an dem Webbrowser auslesen, was wiederrum nicht sein kann da ich es hinbekommen habe den eben in dem Format
#,## € in einem Label anzuzeigen.

Wisst Ihr Rat?

Hallo!

Das sieht nach einem grundsätzlichen Verständnisproblem aus.
Du musst Dir immer dessen bewusst sein, welchen Typ eine Variable hat!
Sowohl WebBrowser1.Document.Body.OuterText als auch TextBox3.Text sind String Werte, beliebige Zeichenketten, keine Zahlen!
Wenn Du diese Werte „addierst“, wie Du schreibst, benutzt Du den ‚+‘-Operator, dessen Funktionalität sich je nach beteiligten Datentypen unterscheidet.
Verwendest Du ‚+‘ mit nummerischen Werten, werden diese addiert.
Bei Stringwerten werden diese konkateniert (d.h. aneinandergehängt), aber das willst Du ja anscheinend nicht!

Also: Zuerst die Zeichenketten in tatsächliche nummerische Werte wandeln (dabei ist es für Deine Anwendung ziemlich egal, ob Integer oder Long oder sonstwas - das beschränkt ja nur den möglichen Wertebereich) und dann damit weiterarbeiten.
Zum Umwandeln bietet z.B. Int32 eine Methode „Parse“ an:

Dim browserinhalt As String
Dim textfeldinhalt As String

browserinhalt = WebBrowser1.Document.Body.OuterText
textfeldinhalt = TextBox3.Text

Dim wert1, wert2 as Int32

wert1 = Int32.Parse(browserinhalt) ' hier bekommst Du eine Exception
wert2 = Int32.Parse(textfeldinhalt)' wenn einer der Texte nichtnummerisch ist

Dim summe as Int32

summe = wert1 + wert2 ' hier werden jetzt tatsächlich 2 Zahlen addiert!

Gruß,
Martin

P.S.: Es heisst „Endeffekt“ :smile: