Modul-Berechnung als Ergebnis ausgeben

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von n30phyt3.

    Modul-Berechnung als Ergebnis ausgeben

    Hello all ²gether ;) Guten Morgen =)

    mein nächstes Problem:

    Ich habe ein Modul "vb_berechnung" und möchte,
    dass das Ergebnis (wird über CheckBoxen zusammengerechnet Checked=1 / Unchecked=0) so abgespeichert wird,
    dass ich sagen wir mal mit

    Quellcode

    1. Call vb_berechnung
    2. Label1.Text=vb_berechnung


    anzeigen lassen kann



    Quellcode

    1. Module berechnung
    2. Public Function vb_berechnung() As String
    3. With Main
    4. vb_berechnung = .chk5.Checked * 2 ^ 0 + .chk6.Checked * 2 ^ 1 + _
    5. .chk7.Checked * 2 ^ 2 + .chk8.Checked * 2 ^ 3 + .chk9.Checked * 2 ^ 4 + _
    6. .chk10.Checked * 2 ^ 5 + .chk11.Checked * 2 ^ 6 + .chk12.Checked * 2 ^ 7 + _
    7. .chk13.Checked * 2 ^ 8 + .chk14.Checked * 2 ^ 9 + .chk4.Checked * 2 ^ 10
    8. End With
    9. Return Nothing
    10. End Function
    11. End Module
    12. End Module


    Wäre für jede Hilfe sehr dankbar ;)

    Edit by der_Kurt:
    die Farbe Rot ist den Moderatoren vorbehalten
    * Farbe entfernt *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Ich würde dir dringend raten mal ein wening VB.NET Grundlagen zu lernen. Zahlen zusammen rechnen und dann hat die Funktion "String" als rückgabe Typ? Irgendwas passt hier nicht.
    Allgemein passen die Datentypen nicht zusammen.

    Eine Checked Eigenschaft ist vom Typ Boolean, also True oder False. jetzt ist die Frage wie willst du

    True * 2 ^ 0 rechnen??

    Zudem soll bei dem "+" der String zusammen gefügt oder die ergebnise Addiert werden?

    Für Mathematische Funktionen und Berechnungen sind Datentypen wie Integer für Ganzzahlen oder Double, Decimal für Kommazahlen notwendig. Da bei deiner Rechnung ka keine Kommazahlen vorkommen können kannst du hierbei also eine Variable vom Typ Integer nehmen.

    Dann zum aufruf, du brauchst kein Call mehr, da rufst du die Funktion 2 mal auf und einmal davon ist unnötig.

    VB.NET-Quellcode

    1. Label1.Text = vb_berechnung()


    ist vollkommen ausreichend.
    danke erstmal für die Infos ;)

    also As Integer ... und wie kann ich dann Value der Checkboxen in 1 oder 0 umwandeln zum berechnen?

    Ja die sollen dann addiert werden.

    Bei VB6.0 hatte das funktioniert weil es da chk.Value =1 oder 0 war ... und nu bin ich mit VB2010 auf Empfehlung von picoflop unterwegs ;) Gruß an Dich :)

    n30phyt3 schrieb:

    Wäre für jede Hilfe sehr dankbar

    1. Call wird nicht mehr verwendet
    2. Funktionen haben einen rückgabewert, denn man zuweisen sollte (a = ergebnis(b))
    3. Die "Checked" eigenschaft einer Checkbox ist keine Zahl
    4. Wenn man eine Zahl hat, macht es keinen Sinn, diese als String zurückzuliefern.
    5. Nothing gibt man nicht zurück, wenns kein Problem gab ...


    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. MessageBox.Show(CheckboxToInt.ToString)
    3. End Sub
    4. Private Function CheckboxToInt() As Integer
    5. Dim l As Integer = 0
    6. For i = 1 To 4
    7. If DirectCast(Me.Controls("Checkbox" & i.ToString), CheckBox).Checked Then l = l Or (1 << (i - 1))
    8. Next
    9. Return l
    10. End Function
    Naja mit

    VB.NET-Quellcode

    1. If Checkbox1.Checked Then


    prüfen und entsprechend die berechnung durchführen.

    VB.NET-Quellcode

    1. Public Function Berechnen() As Integer
    2. Dim Ergebnis As Integer = 0
    3. If .chk5.Checked Then Ergebnis += 2 ^ 0
    4. If .chk6.Checked Then Ergebnis += 2 ^ 1
    5. If .chk7.Checked Then Ergebnis += 2 ^ 2
    6. Return Ergebnis
    7. End Function


    Bedenke das du natürlich bei der Zuweisung des Wertes in ein Label du nicht einfach den Integer Wert einem String zuweisen kannst, hierfür nutzte die Methode .ToString()
    Ich liebe Euch :thumbsup: hat alles bestens geklappt. Und ich saß gestern fast den ganzen Tag daran :whistling:

    Wie gesagt bin noch ziemlich am Anfang was VisualBasic angeht, also nicht böse sein falls von mir solche
    (für Euch kleine) Fragen kommen. Will euch echt nicht nerven ;) Ihr habt mir echt weiter geholfen

    BIG THX
    Nun nichts gegen Anfänger fragen =) aber deine sinds nicht wirklich das sind simpelste Grundlagen.

    Also nachvollziehen kann ichs schon, mir viel der Umsteig vb6 -> vb2005 auch nicht leicht, aber ich habe mich langsam eingearbeitet, erstmal verstehen wie das Framework funktioniert und die altlasten aus vb6 zurück lassen.