none
Lottozahlen Auswerten RRS feed

  • Frage

  • Hallo Zusammen

    Ich möchte mit Visual Basic 2012 Lottozahlen Auswerten. Dazu habe ich eine Listbox1 " Hier werden meine Tipps von eine Textdatei Eingelesen"

    02  09  10  27  32  48
    02  09  19  21  39  48
    02  13  14  27  42  47
    02  13  20  23  45  47
    03  06  15  28  30  44
    03  15  17  29  34  46
    03  15  23  24  42  46
    04  10  11  25  40  48

    Die Listbox1 ist schon gefüllt mit ListBox1.Items.Add(sr.ReadLine).

    Und 49 checkboxen "Hier werden die gezogenden Zahlen angeklickt ......6 Zahlen" .

    Durch ein klick auf ein Button1 sollen jetzt die Zahlen Ausgewertet werden.

    Dazu habe ich 5 Label wo das ergebnis(anzahl) angezeigt werden soll.

     Label1.Text = sechser
     Label2.Text = fuenfer
     Label3.Text = vierer
     Label4.Text = dreier
     Label5.Text = zweier

    Und genau hier komme ich nicht weiter.....Mein Code bis jetzt ist so.
    Friend Class Form2
    
    Dim AlleCheckBoxen As New ArrayList
    
     Dim zweier As Integer
     Dim dreier As Integer
     Dim vierer As Integer
     Dim fuenfer As Integer
     Dim sechser As Integer
    
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
           
            ' 49 Verweise auf CheckBoxen in eine Liste aufnehmen
    
            AlleCheckBoxen.Add(Checkbox1)
            AlleCheckBoxen.Add(Checkbox2)
            AlleCheckBoxen.Add(Checkbox3)
            AlleCheckBoxen.Add(Checkbox4)
            AlleCheckBoxen.Add(Checkbox5)
            AlleCheckBoxen.Add(Checkbox6)
            AlleCheckBoxen.Add(Checkbox7)
            AlleCheckBoxen.Add(Checkbox8)
            AlleCheckBoxen.Add(Checkbox9)
            AlleCheckBoxen.Add(Checkbox10)
            AlleCheckBoxen.Add(Checkbox11)
            AlleCheckBoxen.Add(Checkbox12)
            AlleCheckBoxen.Add(Checkbox13)
            AlleCheckBoxen.Add(Checkbox14)
            AlleCheckBoxen.Add(Checkbox15)
            AlleCheckBoxen.Add(Checkbox16)
            AlleCheckBoxen.Add(Checkbox17)
            AlleCheckBoxen.Add(Checkbox18)
            AlleCheckBoxen.Add(Checkbox19)
            AlleCheckBoxen.Add(Checkbox20)
            AlleCheckBoxen.Add(Checkbox21)
            AlleCheckBoxen.Add(Checkbox22)
            AlleCheckBoxen.Add(Checkbox23)
            AlleCheckBoxen.Add(Checkbox24)
            AlleCheckBoxen.Add(Checkbox25)
            AlleCheckBoxen.Add(Checkbox26)
            AlleCheckBoxen.Add(Checkbox27)
            AlleCheckBoxen.Add(Checkbox28)
            AlleCheckBoxen.Add(Checkbox29)
            AlleCheckBoxen.Add(Checkbox30)
            AlleCheckBoxen.Add(Checkbox31)
            AlleCheckBoxen.Add(Checkbox32)
            AlleCheckBoxen.Add(Checkbox33)
            AlleCheckBoxen.Add(Checkbox34)
            AlleCheckBoxen.Add(Checkbox35)
            AlleCheckBoxen.Add(Checkbox36)
            AlleCheckBoxen.Add(Checkbox37)
            AlleCheckBoxen.Add(Checkbox38)
            AlleCheckBoxen.Add(Checkbox39)
            AlleCheckBoxen.Add(Checkbox40)
            AlleCheckBoxen.Add(Checkbox41)
            AlleCheckBoxen.Add(Checkbox42)
            AlleCheckBoxen.Add(Checkbox43)
            AlleCheckBoxen.Add(Checkbox44)
            AlleCheckBoxen.Add(Checkbox45)
            AlleCheckBoxen.Add(Checkbox46)
            AlleCheckBoxen.Add(Checkbox47)
            AlleCheckBoxen.Add(Checkbox48)
            AlleCheckBoxen.Add(Checkbox49)
    
        End Sub
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
    Dim GewählteCheckBoxen As New ArrayList
    
    Dim i, z As Integer
    
    Dim ListBoxZeile As String
    
     zweier = 0
     dreier = 0
     vierer = 0
     fuenfer = 0
     sechser = 0
     treffer = 0
    
     ' Angekreuzte Zahlen aufsammeln
            For i = 0 To 48
                If AlleCheckBoxen(i).Checked Then
                    GewählteCheckBoxen.Add(AlleCheckBoxen(i).Text)
                End If
            Next
    
    
            For z = 0 To ListBox1.Items.Count - 1
    
    ' Eine Zeile aus der ListBox
                    ListBoxZeile = ListBox1.Items(z)
                   
    
    Und genau Hier FEHLT mir was..??????????????
    
     
    
    
    Next z
    
            Label1.Text = sechser
            Label2.Text = fuenfer
            Label3.Text = vierer
            Label4.Text = dreier
            Label5.Text = zweier
    
               End Sub
    End Class
    
    


    Für jede Hilfe bin ich echt dankbar....Gruß Meikel
    Donnerstag, 11. Juli 2013 12:37

Antworten

  • Hallo Dennis

    Mein Profi ist noch im Urlaub. Aber ich habe es selbst Hinbekommen. Es geht um  die Auswertung von Lotto Zahlen die gezogen worden sind mit den  Gespielten Tipps. Dazu habe ich 49 Checkboxen , 2 Listboxen , 6 Label und ein Button. Ich werde das jetzt genauso schreiben wie ich es gemacht habe. Zuerst werden die Gespielten Tipps (TxT.Datei) in der Listbox1 geladen.

    Beispiel:

    01  04  06  07  09  10
    01  04  11  22  33  44
    01  04  17  23  35  45
    01  04  18  24  36  46
    01  04  20  26  41  47
    01  04  21  28  43  48
    01  06  11  23  36  47
    01  06  17  24  41  48
    01  06  18  26  43  44
    01  06  20  28  33  45
    01  06  21  22  35  46
    01  07  11  24  43  45
    01  07  17  26  33  46

    Dan werden die Gezogenden Zahlen auf die Checkboxen angeklickt....und wen man 6 Zahlen hatt werden sie in ein Label geschrieben......in mein Code Label5.

    Beispiel:

    01 07 18 33 45 49

    Man kan auch erstmal Label5.Text = (01 07 18 33 45 49)

    benutzen . Also geht auch ohne Checkboxen erstmal....

    Die anderen Label sind für die Anzeige der Treffer da. Bei mir

    Label31.Text = sechser
    Label33.Text = fuenfer
    Label35.Text = vierer
    Label37.Text = dreier
    Label39.Text = zweier

    In der Listbox2 schreibt der Code die Reihen rein die einen Treffer haben. Hier der Code der Funktioniert.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim myTip(6) As Long
            Dim gezogen(6) As Long
            Dim i As Long
            Dim j As Long
            Dim treffer As Long
            Dim ListBoxZeile As String
            Dim LabelZeile As String
            Dim z As Integer
            Dim zweier As Integer
            Dim dreier As Integer
            Dim vierer As Integer
            Dim fuenfer As Integer
            Dim sechser As Integer
            Dim treffer As Integer
    
            zweier = 0
            dreier = 0
            vierer = 0
            fuenfer = 0
            sechser = 0
            treffer = 0
            ListBox2.Items.Clear()
            
    
            
            LabelZeile = Label5.Text
            ' Label Splitten
            Dim Gewinnzahlen() As String = LabelZeile.Split(" ")
    
            For z = 0 To ListBox1.Items.Count - 1
    
                ' Eine Zeile aus der ListBox
                ListBoxZeile = ListBox1.Items(z).ToString()
    
                ' ListBox Splitten
                Dim tipps As String() = ListBoxZeile.Split(" ")
    
                myTip(1) = tipps(0)
                myTip(2) = tipps(2)
                myTip(3) = tipps(4)
                myTip(4) = tipps(6)
                myTip(5) = tipps(8)
                myTip(6) = tipps(10)
    
                gezogen(1) = Gewinnzahlen(0)
                gezogen(2) = Gewinnzahlen(1)
                gezogen(3) = Gewinnzahlen(2)
                gezogen(4) = Gewinnzahlen(3)
                gezogen(5) = Gewinnzahlen(4)
                gezogen(6) = Gewinnzahlen(5)
    
    
                For i = 1 To 6
                    For j = 1 To 6
                        If myTip(i) = gezogen(j) Then
                            treffer = treffer + 1
                            Exit For
                        End If
                    Next j
                Next i
    
                If (treffer = 6) Then
                    sechser = sechser + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 5) Then
                    fuenfer = fuenfer + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 4) Then
                    vierer = vierer + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 3) Then
                    dreier = dreier + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 2) Then
                    zweier = zweier + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                Label31.Text = sechser
                Label33.Text = fuenfer
                Label35.Text = vierer
                Label37.Text = dreier
                Label39.Text = zweier
    
                treffer = 0
            Next z
        End Sub

    Gruß Meikel

    • Als Antwort markiert Meikel_01 Montag, 29. Juli 2013 12:08
    Samstag, 27. Juli 2013 17:08

Alle Antworten

  • Hallo, da du die Items der ListBox aus einer Textdatei ausließt, denke ich mal, das es sich um Strings handelt, die die Zahlen enthalten, welche durch Leerzeichen getrennt sind. Also musst du erst einmal die Zahlen auf splitten:

    Dim zahlen As String() = ListBoxZeile.Split(" "c)

    Nun hast du also ein Array von Zahlen, welche aber noch Strings sind. Nun musst du ermitteln ob die Zahlen die angekreuzten CheckBoxen sind. Die ArrayList GewählteCheckBoxen enthält ja die Liste der CheckBoxen. Diese Liste würde ich nun durch gehen und die Zahl aus dem Namen der CheckBoxen abfragen:

    Dim GewählteZahlen As New List(Of String)()
    For Each cb As CheckBox In GewählteCheckBoxen
    	'Name = "CheckBox1"
    	'"Checkbox" weg kürzen
    	GewählteZahlen.Add(cb.Name.SubString(8))
    Next
    

    Nun hast du eine neue Liste. Diese könntest du auch gleich erstellen, anstelle die Liste von CheckBoxen zu erzeugen.
    Nun kannst du mit der Contains-Methode überprüfen ob eine Zahl aus ListBoxZeile enthalten ist. Immer wenn ein Treffer statt fand, zählst du einen Zähler hoch, am ende kannst du den Zähler auswerten:

    For Each zahl As String In zahlen
    	If GewählteZahlen.Contains(zahl) Then 'Über prüfen ob Zahl in der LB-Zeile enthalten ist.
    treffer += 1 End If Next '"treffer" weiter verarbeiten. If treffer = 6 Then MessageBox.Show("Gewonnen!") End If

    Hinweis: Ich habe das alles nur schnell zusammen geschrieben, weswegen noch Tippfehler enthalten sein könnten.


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets        C# &u892; VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 11. Juli 2013 12:59
    Moderator
  • Du brauchst nur 2 Listen mit den jeweiligen Werten. Du gehst die Elemente der 1. ListBox durch und splittest den String wie oben gezeigt auf. Mithilfe der Contains-Methode kannst du überprüfen ob eine Liste ein bestimmtes Element enthält. Also musst den geteilten String mit der 2. Liste abprüfen. Am einfachsten über die genannte Methode.

    Versuche es einfach mal einzubauen. Wenn es funktioniert, dann ist's gut, wenn nicht, dann kann ich(jmd. anderes nochmal drüber gucken.


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Meikel_01 Freitag, 12. Juli 2013 07:55
    • Tag als Antwort aufgehoben Meikel_01 Dienstag, 16. Juli 2013 16:12
    Donnerstag, 11. Juli 2013 17:41
    Moderator
  • Hallo Tom.

    Danke für den Tipp. Das geht bei mir aber nicht. Jetzt habe ich die Listbox2 durch ein Label ersetzt das macht die Sache einfacher. Jetzt werden auch Ergebnisse angezeigt....die aber noch manchmal falsch sind. Ich werde das jetzt an einen Profi schicken...der mir schon sehr geholfen hatt. Wen es geht werde ich eine genaue Beschreibung Posten. So das andere die Interesse daran haben sich das ansehen können.

    Vielen Dank

    Gruß Meikel

    Samstag, 13. Juli 2013 17:05
  • Hi Meikel.

    Hat dein Profi dir schon helfen können? Hast du Code zum Posten?

    Ansonsten können wir das Thema ja hier nochmal aufreifen oder dir mit Codeblöcken helfen ... 

    Vielleicht kannst du auch nochmal genauer schreiben, was du mit deinem kleinen Lotto-Tool eigentlich beabsichtigst. 

    Soweit ich deinen Code verstehe, liest du zeilenweise alte Ziehungen (aus einer Datei mit Blanks getrennt) ein, und schaust wie oft eine aktuell eingegebene Zahlenauswahl (deine 49 Checkboxen) darauf zutrifft, und wie viele Richtige es jeweils gewesen wären. Korrekt soweit?


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    Mittwoch, 17. Juli 2013 14:45
  • Hallo Dennis

    Mein Profi ist noch im Urlaub. Aber ich habe es selbst Hinbekommen. Es geht um  die Auswertung von Lotto Zahlen die gezogen worden sind mit den  Gespielten Tipps. Dazu habe ich 49 Checkboxen , 2 Listboxen , 6 Label und ein Button. Ich werde das jetzt genauso schreiben wie ich es gemacht habe. Zuerst werden die Gespielten Tipps (TxT.Datei) in der Listbox1 geladen.

    Beispiel:

    01  04  06  07  09  10
    01  04  11  22  33  44
    01  04  17  23  35  45
    01  04  18  24  36  46
    01  04  20  26  41  47
    01  04  21  28  43  48
    01  06  11  23  36  47
    01  06  17  24  41  48
    01  06  18  26  43  44
    01  06  20  28  33  45
    01  06  21  22  35  46
    01  07  11  24  43  45
    01  07  17  26  33  46

    Dan werden die Gezogenden Zahlen auf die Checkboxen angeklickt....und wen man 6 Zahlen hatt werden sie in ein Label geschrieben......in mein Code Label5.

    Beispiel:

    01 07 18 33 45 49

    Man kan auch erstmal Label5.Text = (01 07 18 33 45 49)

    benutzen . Also geht auch ohne Checkboxen erstmal....

    Die anderen Label sind für die Anzeige der Treffer da. Bei mir

    Label31.Text = sechser
    Label33.Text = fuenfer
    Label35.Text = vierer
    Label37.Text = dreier
    Label39.Text = zweier

    In der Listbox2 schreibt der Code die Reihen rein die einen Treffer haben. Hier der Code der Funktioniert.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim myTip(6) As Long
            Dim gezogen(6) As Long
            Dim i As Long
            Dim j As Long
            Dim treffer As Long
            Dim ListBoxZeile As String
            Dim LabelZeile As String
            Dim z As Integer
            Dim zweier As Integer
            Dim dreier As Integer
            Dim vierer As Integer
            Dim fuenfer As Integer
            Dim sechser As Integer
            Dim treffer As Integer
    
            zweier = 0
            dreier = 0
            vierer = 0
            fuenfer = 0
            sechser = 0
            treffer = 0
            ListBox2.Items.Clear()
            
    
            
            LabelZeile = Label5.Text
            ' Label Splitten
            Dim Gewinnzahlen() As String = LabelZeile.Split(" ")
    
            For z = 0 To ListBox1.Items.Count - 1
    
                ' Eine Zeile aus der ListBox
                ListBoxZeile = ListBox1.Items(z).ToString()
    
                ' ListBox Splitten
                Dim tipps As String() = ListBoxZeile.Split(" ")
    
                myTip(1) = tipps(0)
                myTip(2) = tipps(2)
                myTip(3) = tipps(4)
                myTip(4) = tipps(6)
                myTip(5) = tipps(8)
                myTip(6) = tipps(10)
    
                gezogen(1) = Gewinnzahlen(0)
                gezogen(2) = Gewinnzahlen(1)
                gezogen(3) = Gewinnzahlen(2)
                gezogen(4) = Gewinnzahlen(3)
                gezogen(5) = Gewinnzahlen(4)
                gezogen(6) = Gewinnzahlen(5)
    
    
                For i = 1 To 6
                    For j = 1 To 6
                        If myTip(i) = gezogen(j) Then
                            treffer = treffer + 1
                            Exit For
                        End If
                    Next j
                Next i
    
                If (treffer = 6) Then
                    sechser = sechser + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 5) Then
                    fuenfer = fuenfer + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 4) Then
                    vierer = vierer + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 3) Then
                    dreier = dreier + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                If (treffer = 2) Then
                    zweier = zweier + 1
                    ListBox2.Items.Add(ListBox1.Items(z))
                End If
    
                Label31.Text = sechser
                Label33.Text = fuenfer
                Label35.Text = vierer
                Label37.Text = dreier
                Label39.Text = zweier
    
                treffer = 0
            Next z
        End Sub

    Gruß Meikel

    • Als Antwort markiert Meikel_01 Montag, 29. Juli 2013 12:08
    Samstag, 27. Juli 2013 17:08