[Gelöst]Frage zu den untersch. Datentypen

Diskutiere [Gelöst]Frage zu den untersch. Datentypen im Programmierung Forum im Bereich Software Forum; Hallo alle Zusammen! Also ich lerne gerade VB6. Ich habe ein Programm gemacht, dass den Benzinverbrauch auf 100 Kilometer ausrechnet. Es...
W

White Window

Threadstarter
Mitglied seit
18.10.2007
Beiträge
10
Hallo alle Zusammen!

Also ich lerne gerade VB6.
Ich habe ein Programm gemacht, dass den Benzinverbrauch auf 100 Kilometer ausrechnet.
Es funktioniert ja auch ganz gut. Aber nur wenn die beiden Felder ausgefüllt sind.
Wenn nur eins oder garkeins ausgefüllt ist, kommt immer ein Laufzeitfehler, dass die Datentypen unverträglich sind.
Und wenn ich bei gefahrene Kilometer, eine Null eintrage, kommt ein Fehler, Division durch Null (ist ja klar)

Vielleicht könnte mir jemand den Source optimieren, dass dann nicht ein Laufzeitfehler kommt, sondern z.B. eine MsgBox wo dann drinne steht:
"Sie müssen beide Felder ausfüllen!"

------------------------------Hier der Source-------------------------------------------------

Code:
Private Sub cmdCalc_Click()
   Dim dbl_Verbrauch As Double
   Dim int_Answer As Integer ' Variable für die MsgBox
   Dim a As Double, b As Double
   
   a = CDbl(txtBenzin.Text)
   b = CDbl(txtKM.Text)
  
   dbl_Verbrauch = Verbrauch(a, b)
   
   int_Answer = MsgBox("Der Benzinverbrauch beträgt " & dbl_Verbrauch & " Liter pro 100 Kilometer", _
   vbOKOnly, "Benzinverbrauch")
End Sub

Private Function Verbrauch(benzin As Double, km As Double)
   Verbrauch = benzin * 100 / km
End Function

Ich hab es auch schon mit dem Typ Currency ausprobiert, aber es war das selbe Lied.
Falls jemand die kompletten Projektdaten braucht, so kann er sich diese hier herunterladen.


Ich wäre wirklich, für jede Hilfe dankbar. Denn ich möchte VB besser verstehen.

Bis dahin, verbleibe ich mit den besten Grüßen
White
 
Zuletzt bearbeitet:
Bullayer

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.155
Standort
DE-RLP-COC
Code:
Private Sub cmdCalc_Click()
   Dim dbl_Verbrauch As Double
   Dim int_Answer As Integer ' Variable für die MsgBox
   Dim a As Double, b As Double
   
   
   On Error GoTo Falsch
   
   a = CDbl(txtBenzin.Text)
   b = CDbl(txtKM.Text)
  
   dbl_Verbrauch = Verbrauch(a, b)
   
   int_Answer = MsgBox("Der Benzinverbrauch beträgt " & dbl_Verbrauch & " Liter pro 100 Kilometer", _
   vbOKOnly, "Benzinverbrauch")
   
   Exit Sub
   
Falsch:
    MsgBox ("Fehler")
End Sub

Private Function Verbrauch(benzin As Double, km As Double)
   Verbrauch = benzin * 100 / km
End Function
 
W

White Window

Threadstarter
Mitglied seit
18.10.2007
Beiträge
10
okay danke!
werd ich ma testen.

und double kann ich beibehalten?
 
Bullayer

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.155
Standort
DE-RLP-COC
Du kannst noch beim KeyPress-Ereignis für die beiden Textfelder den folgenden Code hinterlegen, dann kannst du nur Zahlen eingeben, aber keine Buchstaben.

Code:
Private Sub txtBenzin_KeyPress(KeyAscii As Integer)
    'Wenn Zeichen keine Ziffer ist, dann Löschen
    If KeyAscii < 48 Or KeyAscii > 57 Then
        '... Zeichen löschen, wenn nicht Backspace gedrückt wurde
        If KeyAscii <> 8 Then KeyAscii = 0
    End If
End Sub
 
W

White Window

Threadstarter
Mitglied seit
18.10.2007
Beiträge
10
Vielen Dank Bullayer!
es hat gefunzt.

Nur
Code:
On Error GoTo Falsch
dass hab ich nicht genommen, da ich goto nicht so toll finde.

Hier mein Source:

Code:
Private Sub cmdCalc_Click()
   On Error Resume Next
   
   Dim Verbrauch As Long
   Dim Answer As Integer ' Variable für die MsgBox
   
   If txtKM And txtBenzin = "" Then
      MsgBox "Bitte gib die geforderten Werte ein!", vbCritical, "Error"
   Else
      Verbrauch = txtBenzin * 100 / txtKM
      Answer = MsgBox("Der Benzinverbrauch beträgt " & Verbrauch & " Liter pro 100 Kilometer", _
      vbOKOnly, "Benzinverbrauch")
   End If
End Sub

Private Sub txtBenzin_KeyPress(KeyAscii As Integer)
   On Error Resume Next
   
   If KeyAscii < 48 Or KeyAscii > 57 Then
      If KeyAscii <> 8 Then
         KeyAscii = 0
      End If
   End If
End Sub

Private Sub txtKM_KeyPress(KeyAscii As Integer)
   On Error Resume Next
   
   If KeyAscii < 48 Or KeyAscii > 57 Then
      If KeyAscii <> 8 Then
         KeyAscii = 0
      End If
   End If
End Sub
Nur eine Frage hätte ich noch. Und zwar, wie bekomme ich es hin, dass die Enter Taste, das Click Ereigniss für cmdCalc ausführt?
 
Bullayer

Bullayer

Schwergewicht
Mitglied seit
19.07.2006
Beiträge
24.155
Standort
DE-RLP-COC
Was machst du, wenn nur eins der beiden Textfelder gefüllt ist?

Wie wärs mit:

Code:
   If txtKM And txtBenzin <> "" Then
      Verbrauch = txtBenzin * 100 / txtKM
      Answer = MsgBox("Der Benzinverbrauch beträgt " & Verbrauch & " Liter pro 100 Kilometer", _
      vbOKOnly, "Benzinverbrauch")
   Else
      MsgBox "Bitte gib die geforderten Werte ein!", vbCritical, "Error"
   End If
 
W

White Window

Threadstarter
Mitglied seit
18.10.2007
Beiträge
10
Mit meinem Source funzt es auch perfekt.
Wenn nur eins gefüllt ist, kommt ja der fehler.
dafür sorgt bei mir die folgende zeile:

Code:
If txtKM And txtBenzin = "" Then
Aber deine Variante ist auch nicht schlecht.


Und wie bekomme ich es hin, dass beim druck auf enter dass click ereigniss ausgeführt wird?
 
Thema:

[Gelöst]Frage zu den untersch. Datentypen

[Gelöst]Frage zu den untersch. Datentypen - Ähnliche Themen

  • Diese Frage als gelöst markieren Windows 10 - Problem mit Netzwerkverbindung nach Upgrade - Kein Int

    Diese Frage als gelöst markieren Windows 10 - Problem mit Netzwerkverbindung nach Upgrade - Kein Int: Hallo, mein alter Laptop Dell Inspiron 9400 ist bislang anstandslos unter Windows 10 x64 gelaufen, zuletzt mit der Version 1607. Nach dem Upgrade...
  • GELÖST Falsche Suchmashine -Problem gelöst, aber Fragen

    GELÖST Falsche Suchmashine -Problem gelöst, aber Fragen: Hallo! Seit Anfang des Monats startete Firefox auf einem untergeordneten Benutzerkonto immer mit der Bing-Suchmaschine. War irgendwie ganz...
  • Fragen zu Vista-Installation mit Fremd-Datenträger[gelöst]aber jetztein neues PROBLEM

    Fragen zu Vista-Installation mit Fremd-Datenträger[gelöst]aber jetztein neues PROBLEM: also folgendes problem: mein pc hatte einen fehler an der festplatte jetzt hab ich ne neue aber um die daten von der alten festplatte drauf zu...
  • GELÖST [Gelöst] Allgemeine Frage Formatierung

    GELÖST [Gelöst] Allgemeine Frage Formatierung: Hallo, kleine Frage: Wie stelle ich bei MS Office bzw. OpenOffice ein, dass ich mit der Maus irgendwo klicken kann und dort an der Stelle gleich...
  • [Gelöst] .NET-Framework 3.0: Frage zu ...

    [Gelöst] .NET-Framework 3.0: Frage zu ...: Hi Jungs, alles ok? Frage: wenn ich meine Kiste neu aufsetze und die 3er vom Framework draufknalle, sind da die 1er und 2er in der 3er mit drin...
  • Ähnliche Themen

    Oben