VB Express Overflow verhindern

Hi,
Ich habe in VB einen kleinen Taschenrechner Programmiert.
Es Gibt blos das Problemm das das Programm abstürzt wenn man zu große Zahlen eingibt oder berechnen tut.

Wie kann man einen solchen Overflow verhindern.

bastler1560

(PS: Die Variablen sind Integer)

Hi,
Ich habe in VB einen kleinen Taschenrechner Programmiert.
Es Gibt blos das Problemm das das Programm abstürzt wenn man
zu große Zahlen eingibt oder berechnen tut.

gibt es dazu auch die rechnung, oder sollen wir erahnen was du wie tust, immerhin gibt es meist nicht nur eine lösung.

ansonsten sag ich mal , exceptions abfangen .

Wie kann man einen solchen Overflow verhindern.

bastler1560

(PS: Die Variablen sind Integer)

Hallo

Tja also zum einen könntest du andere datentypen verwendedn wie zB Long, oder auch Double oder Decimal (bei einem taschenrechner werden doch meistens sowieso auch zahlen mit nachkommastellen gebraucht). Bei den beiden letzten musst du allerdings ab bestimmten größen mit rundungsfehlern rechnen, und auch hier gibts nach oben hin eine schranke (bei Double etwa 10^305).

Fur beliebig große zahlen bleibt dir wohl nichts anderes übrig als einen eigenen datentyp zu schreiben der genau das bereitstellt, das sollte aber etwas schwierig werden!
Kannst ja mal googeln ob es nicht schon jemand gemacht hat und den code zur verfügung stellt oder eine DLL daraus gemacht hat, die du verwenden kannst

MfG IGnow

Das mit den decimal geht ganz gut.
aber wenn man 999999999999999999999999999999999999
eingibt stürzt es immer noch ab.

Tja auch decimal hat seine grenzen!
Beliebig große werte werden von .Net so direkt nicht zur verfügung gestellt.
Aber um dir speziell dabei zu helfen den Programmabsturz zu verhindern bräuchte ich tatsächlich mal zumindedst einen codeschnipsel der dein vorgehen verdeutlicht!
Wie groß sollen denn die zahlen sein, die du eingeben kannst?

MfG IGnow

es ist ein windowsprogramm (das fenster kann ich die nicht zeigen weil hier keine bilder darstellbar sind)

Hier ein Codeschnipsel:
(das eigentliche programm ist noch viel länger)

Public Class Form1

 Private Property Zahl As Decimal

 Private Property ergeb As Decimal

 Private Property Zahlz As Decimal


 Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 If IsNumeric(TextBox1.Text) Then
 If IsNumeric(TextBox2.Text) Then
 Zahl = CDec(TextBox1.Text)
 Zahlz = CDec(TextBox2.Text)
 ergeb = Zahl + Zahlz
 Label1.Text = CStr(ergeb)
 Else
 Label1.Text = "Überprüfen sie die Eingabe!!!"
 End If
 Else
 Label1.Text = "Überprüfen sie die Eingabe!!!"
 End If
 End Sub

Okay dann probiers mal so

Public Class Form1
 
 Private Property Zahl As Decimal

 Private Property ergeb As Decimal

 Private Property Zahlz As Decimal

 Private Sub Button1\_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
 If Decimal.TryParse(TextBox1.Text, Zahl) Then
 If Decimal.TryParse(TextBox2.Text, Zahlz) Then
 ergeb = Zahl + Zahlz
 Label1.Text = CStr(ergeb)
 Else
 Label1.Text = "Überprüfen sie die Eingabe!!!"
 End If
 Else
 Label1.Text = "Überprüfen sie die Eingabe!!!"
 End If
 End Sub

Ich habe IsNumeric durch Decimal.TryParse ersetzt und ein paar kleine änderungen vorgenommen! Auf diese weise SOLLTE es zumindest nicht mehr abstürzen! Wie ich berreits gesagt habe gibt es standartmäßig keine datentypen für beliebigngroße zahlen, deswegen musst du dich mit 9999999999… Von Decimal zufrieden geben oder dir selbst einen entsprechenden programmieren!

ich hab seit längerem kein VB mehr geschrieben also verzeih mir wenn der Compiler einen Fehler bringt! Ich denke aber das du es selber schaffst den weg zu bekommen ^^

MfG IGnow

get gud. danke