Formel berechnen in Windows Form

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von shaun.

    Formel berechnen in Windows Form

    Hallo zusammen,

    brauche nochmal eure Hilfe.

    Ich möchte in einer Windowsform eine Formel berechnen. Es geht um Überbrückungszeit von Batterien.

    Hierzu fülle ich 3 Textboxen mit den notwendigen Daten Alarmstrom, Ruhestrom und Kapazität der Batterien.

    Nun soll nach Betätigung eines CommandButton in Textbox4 die errechnete Überbrückungszeit (ohne Kommastellen) ausgegeben werden.

    Eingaben:

    Textbox1 = Batteriekapazität
    Textbox2 = Ruhestrom
    Textbox3 = Alarmstrom

    Die Formel wäre:

    Textbox4 = (Textbox1 - 0.5 * (Textbox3 / 1000)) / (Textbox2 / 1000)



    Wäre toll wenn Ihr mir hier unter die Arme greifen könntet :)
    @shaun:: Rechne mit Zahlen, nicht mit Strings.
    Überleg Dir, ob Du als Eingabecontrol ein NumericUpDown verwendest, da hast Du keine Probleme mit der Konvertierung der Zahlen von Strings.

    VB.NET-Quellcode

    1. Dim bat = Double.Parse(TextBox1.Text) - 0.5
    2. Dim ruh = Double.Parse(TextBox2.Text) / 1000
    3. Dim alm = Double.Parse(TextBox3.Text) / 1000
    4. Dim res = bat * alm / ruh
    5. Textbox4.Text = res.ToString
    Falls es knallt, wenn Du falsche Strings vorgibst, verwende Double.TryParse()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @TE: die Formel ist falsch ;)
    richtig muss es heißen:
    UeberbrueckZeit = (Batteriekapazität - 0.5 * (Alarmstrom / 1000)) / (Ruhestrom / 1000)

    Merke: Niemals mit Textboxen rechnen!

    mach dir eine Klasse mit den Properties
    Batteriekapazität
    Ruhestrom
    Alarmstrom

    und dazu eine Readonly Property
    UeberbrueckZeit , die auf Abruf den Wert berechnet.

    Besonders schick wirds, wenn die Klasse INotifyPropertyChanged implementiert, dann kannst du Databinding anwenden.

    sonne75 schrieb:

    Deine Formel ist falsch
    Wie die Klammern halt stehen, andernfalls C&P-Bremse. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    danke euch für die schnelle Hilfe. :thumbsup:

    Prinzipiell war meine Formel richtig, bin halt von Punkt vor Strich ausgegangen und hab die Klammern weggelassen :)


    Hab´s jetzt so realisiert:

    Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim bat = Double.Parse(TextBox1.Text)
    3. Dim ruh = Double.Parse(TextBox2.Text) / 1000
    4. Dim ala = Double.Parse(TextBox3.Text) / 1000
    5. Dim res = bat * (0.5 * ala) / ruh
    6. TextBox4.Text = res.ToString
    7. End Sub


    hab noch die Felder gesperrt, so dass nur Zahlen möglich sind und im Ergebnisfeld sind gar keine Eingaben möglich.

    Das einzige was mir jetzt noch fehlt zum Glück wäre die Ausgabe als ganze Zahl, sprich ohne Nachkommastellen.

    Ist das in den Eigenschaften des Feldes einzustellen oder in der Formel ? :whistling:

    shaun schrieb:

    sprich ohne Nachkommastellen.
    So:

    VB.NET-Quellcode

    1. TextBox4.Text = res.ToString("0")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!