Visual Basic 2010 Ohmsches Gesetz (3 Variablen 3 Textboxen)

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VB3-Guru.

    Visual Basic 2010 Ohmsches Gesetz (3 Variablen 3 Textboxen)

    Hallo Leute,
    da ihr mir bereits bei der Ampelsteuerung sehr geholfen habt, wollte ich euch nun bei einem weiteren Problem um Lösungsvorschläge bitten...

    Zu Meinem Problem:
    Ich möchte ein Programm erstellen mit dem das Ohmsche Gesetzt realisiert werden kann.

    Also Spannung=Widerstand*Stromstärke

    Hierbei müssen mindestens 2 der 3 Werte (wert_spannung, wert_widerstand, wert_strom) in die entsprechenden, farblich gekennzeichneten Textboxen eingetragen werden (TextBox_Spannung, TextBox_Widerstand, TextBox_Strom).

    Wenn in TextBox_Widerstand = 2 eingetragen wird und in TextBox_Strom = 5 eingetragen wird, soll bei klick auf "Berechnen" sowohl in der TextBox_Spannung als auch im Label_Spannung das Ergebnis 10 dargestellt werden (Also Widerstand*Strom=Spannung) und die in der TextBox eingetragenen Werte ebenfalls in die entsprechenden Labels.



    Die Form.vb [Design]



    picload.org/image/rlcolcca/ohmschesgesetz.jpg


    Der Code

    VB.NET-Quellcode

    1. Public Class Form
    2. Private Sub Berechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Berechnen.Click
    3. Dim wert_spannung As Decimal
    4. Dim wert_widerstand As Decimal
    5. Dim wert_strom As Decimal
    6. Dim Erg_Spannung As Decimal
    7. Dim Erg_Strom As Decimal
    8. Dim Erg_Widerstand As Decimal
    9. wert_spannung = TextBox_Spannung.Text
    10. wert_widerstand = TextBox_Widerstand.Text
    11. wert_strom = TextBox_Strom.Text
    12. Erg_Spannung = wert_strom * wert_widerstand
    13. Erg_Widerstand = wert_spannung / wert_strom
    14. Erg_Strom = wert_spannung / wert_widerstand
    15. Label_Spannung.Text = Erg_Spannung
    16. Label_Widerstand.Text = Erg_Widerstand
    17. Label_Strom.Text = Erg_Strom
    18. End Sub
    19. End Class


    Momentan habe ich das Problem, dass wenn ich 2 Werte eintrage und die dritte TextBox leer lasse eine Fehlermeldung erscheint (Ungültige Konvertierung von der Zeichenfolge Spannung in Typ Decimal.). Erst, wenn ich zusätzlich einen wert in die dritte Box eintrage rechnet das Programm.

    Ich hoffe ich konnte mein Problem verständlich genug darstellen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „r1zzor“ ()

    @r1zzor
    Das problem ist einfach!
    Du kannst nicht aus der Textbox lesen wenn sie keinen wert hat.

    Versuche mit einer

    Quellcode

    1. String.isNullOrEmpty([Zeiger])
    -if zu prüfen ob die letzt Textbox einen Wert hat.
    Also z.B.

    VB.NET-Quellcode

    1. if String.isNullOrEmpty(TextBox_spannung.text)
    2. MsgBox("Textbox ist leer!")
    3. else
    4. MsgBox("Textbox hat folgenden Text: " + TextBox_spannung.text)
    5. End If


    Grüße, Luca
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @r1zzor Du willst Spannungen und Ströme voneinender unterscheiden, bei den Programmvariablen jedoch wirfst Du alles in einen Topf :!:
    Fang an mit Option Strict On.
    Dann wirfst Du die TextBoxen raus und nimm NumericUpDown-Controls, da hast Du keine Probleme, dass jemand den Widerstand von "Roulade mit Klößen" bestimmen möchte. :thumbsup:
    =====
    Wenn Du einen Wert auslassen kannst, musst Du eine Fallunterscheidung machen, welcher Wert ausgelassen wurde, denn dieser Wert muss aus den anderen beiden berechnet werden.
    So hast Du 3 unterschiedliche Fälle, für jeden ausgelassenen Wert einen.
    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!
    Ich hab vor Jahren mal so ein ähnliches Programm geschrieben - vllt 30 Formeln und 100-200 Eingabefelder. Die Kunst ist hierbei den Pfad der Berechung festzulegen. D.h. ein Parameter wirkt sich auf den nächsten aus und dieser hat als Ergebnis auch wieder Folgen. Die Reihenfolge ist also von Bedeutung.

    Zur Auslösung der Berechnung würde ich dir empfehlen, keinen Button, sondern die Textbox selbst und hier die Eingabe von CR auszuwerten. Wenn eine TB leer ist, ist das Ergebnis für diesen Parameter offen. D.h. wenn du einen Wert für I oder R angibst wird halt das passende U berechnet. Lässt du R offen und gibst U und I vor, wird R berechnet. Beim Ohm'schen Gesetzt ist die Aufgabenstellung trivial - für mich ist das kein Ansporn das nochmal zu proggen ;-). Interessant wird's erst, wenn man 20-30 Parameter hat. Da muss man dann u.U. ein paar fixieren, um den Fluß der Berechnung festzulegen.

    lG, Klaus