Habe noch nicht viel Programmiererfahrung. Schon das untenstehende Beispiel überfordert mich ein wenig.
Es ist ein sehr einfaches Programm mit den Textfelder txt1, text2, text3.
In text3 soll der Benutzer die Summe von text1 und text2 eintragen.
Es klappt durchaus bei einigen Aufgaben, aber bei Kommazahlen erfolgt manchmal die Meldung "Falsch", obwohl das richtige Ergbnis eingegeben wurde!!!!
Wäre sehr dankbar für einen Tipp, was an dem Code falsch ist!
Option Explicit
Dim a As Single
Dim b As Single
Dim c As Single
Private Sub Form_Load()
Call NeueAufgabe
End Sub
Private Sub NeueAufgabe()
a = Int(Rnd * 100) / 100
b = Int(Rnd * 100) / 10
Text1.Text = a
Text2.Text = b
End Sub
Private Sub Command2_Click()
c = Text3.Text
If c = a + b Then
MsgBox "Richtig"
Call NeueAufgabe
Else
MsgBox "Falsch"
End If
End Sub
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Das Problem liegt an der internen Darstellung der Fließkommazahlen.
Wandel die Zahlen in Strings um (geht mit CStr), dann vergleiche die entsprechenden Stellen der Zahl (geht mit Left), dann solltest Du das Problem nicht mehr bekommen.
Grüße
T-Rex
PS: Möchtest Du es zuerst selbst versuchen oder brauchst Du direkt ein Beispiel?
PPS:
Hier (ActiveVB.de) wird Dir in der Regel schneller geholfen, da es ein reines VB-Forum ist.
Das hilft mir schon. Damit ich es wirklich möglichst elegant
schaffe, wäre mir ein kleines Beispiel sehr lieb!
Vielen Dank!
Habe jetzt nicht viel geändert:
Grüße
Helge
Das war ein Volltreffer! Bin bestens zufrieden.
Allerbesten Dank für deine Hilfe!
Evt. ist da nur noch ein einziges Problem: Wenn ich bei 2,3 + 0,7 als Ergebnis 3,0 eingebe, kommt die Meldung "Falsch". Könnte das daran liegen, das "Round" (ist mir auch nicht bekannt, aber das heißt nichts) nicht definiert ist? Mein VB5 streikte bei dem Begriff jedenfalls und ich musste "Round" aus dem Code entfernen!
Ansonsten nochmals vielen Dank!
Grüße aus dem Emsland von werner focke
Das hatte ich nicht getestet.
Wahrscheinlich stört er sich jetzt an dem Komma.
Ergänze mal den Code so:
Grüße aus Kölle
Helge
PS: Ob Round() in VB5 zur Verfügung steht, weiß ich nicht. Habe nur VB6.
Danke für den Hinweis!
Komme durch deine Tipps gut voran!
werner Focke