Hallo zusammen,
zur Zeit schreibe ich meine Programme um. Teilweise stammt der Code aus meiner ersten Vision mit VB5 und wurde in VB 2008 übernommen. Nun in der neuen Version mit VB 2010 möchte ich es eigentlich richtig machen. Option Strict auf On geschaltet und nun möchte ich die goto-Befehle raus haben. Mir ist nicht immer klar, welche Methode die richtige ist. Do .. loop oder doch besser select case. Da solche Sachen öfters in meinem Code vorkommen, hier ein Beispiel. Ich speichere seit Jahren die Lottozahlen in einer Datenbank ab und kann eine Statistik nach Häufigkeit der gezogenen Zahlen drucken.
Hier mal der gesamte code der Sub
Spoiler anzeigen
[/vb]
zur Zeit schreibe ich meine Programme um. Teilweise stammt der Code aus meiner ersten Vision mit VB5 und wurde in VB 2008 übernommen. Nun in der neuen Version mit VB 2010 möchte ich es eigentlich richtig machen. Option Strict auf On geschaltet und nun möchte ich die goto-Befehle raus haben. Mir ist nicht immer klar, welche Methode die richtige ist. Do .. loop oder doch besser select case. Da solche Sachen öfters in meinem Code vorkommen, hier ein Beispiel. Ich speichere seit Jahren die Lottozahlen in einer Datenbank ab und kann eine Statistik nach Häufigkeit der gezogenen Zahlen drucken.
Hier mal der gesamte code der Sub
VB.NET-Quellcode
- Public Sub Statistik()
- Formular.Lottostatistik_Initalisieren()
- Formular.Zeile = 1
- With Formular
- .Zeilenschaltung(2)
- .B = "Deutscher Lottoblock 6 aus 49"
- .Excel_Eintragen(True, False, True)
- .Zeilenschaltung(2)
- End With
- Dim VonDatum As Date = CDate(Datum.Kurz)
- Dim BisDatum As Date = CDate("01.01.1901")
- Dim AnzahlZiehungen As Integer = 0
- Dim GezoLottozahlen(49) As Integer
- Dim TmpLottozahlen(50) As Integer
- Dim TmpZusatzzahlen(50) As Integer
- Dim FestLottozahlen(49) As Integer
- Dim GezoZusatzzahlen(49) As Integer
- Dim FestZusatzzahlen(49) As Integer
- For FLZ As Integer = 0 To 49
- FestLottozahlen(FLZ) = FLZ
- Next
- Dim GezoSuperzahlen(9) As Integer
- BankName = Programm.FinanzBank.BankName
- BankPfad = Programm.FinanzBank.BankPfad
- IdentNummer = 200003
- Initalisieren()
- ConIntern = New OleDb.OleDbConnection
- CmdIntern = New OleDb.OleDbCommand
- ConIntern.ConnectionString = BankVerbindung
- CmdIntern.Connection = ConIntern
- ConIntern.Open()
- CmdIntern.CommandText = "Select * from " & Banktabelle & " where Ident_Nummer like 200003"
- ReaderIntern = CmdIntern.ExecuteReader
- ' Ermitteln der bereits gezogenen Lottozahlen
- Do While ReaderIntern.Read
- AnzahlZiehungen = (AnzahlZiehungen + 1)
- If CDate(ReaderIntern("FN01").ToString) < VonDatum Then VonDatum = CDate(ReaderIntern("FN01").ToString)
- If CDate(ReaderIntern("FN01").ToString) > BisDatum Then BisDatum = CDate(ReaderIntern("FN01").ToString)
- GezoLottozahlen(CInt(Val(ReaderIntern("FN03").ToString))) = GezoLottozahlen(CInt(Val(ReaderIntern("FN03").ToString))) + 1
- GezoLottozahlen(CInt(Val(ReaderIntern("FN04").ToString))) = GezoLottozahlen(CInt(Val(ReaderIntern("FN04").ToString))) + 1
- GezoLottozahlen(CInt(Val(ReaderIntern("FN05").ToString))) = GezoLottozahlen(CInt(Val(ReaderIntern("FN05").ToString))) + 1
- GezoLottozahlen(CInt(Val(ReaderIntern("FN06").ToString))) = GezoLottozahlen(CInt(Val(ReaderIntern("FN06").ToString))) + 1
- GezoLottozahlen(CInt(Val(ReaderIntern("FN07").ToString))) = GezoLottozahlen(CInt(Val(ReaderIntern("FN07").ToString))) + 1
- GezoLottozahlen(CInt(Val(ReaderIntern("FN08").ToString))) = GezoLottozahlen(CInt(Val(ReaderIntern("FN08").ToString))) + 1
- GezoZusatzzahlen(CInt(Val(ReaderIntern("FN09").ToString))) = GezoZusatzzahlen(CInt(Val(ReaderIntern("FN09").ToString))) + 1
- GezoSuperzahlen(CInt(Val(ReaderIntern("FN10").ToString))) = GezoSuperzahlen(CInt(Val(ReaderIntern("FN10").ToString))) + 1
- Loop
- ConIntern.Close()
- For UL As Integer = 1 To 49
- TmpLottozahlen(UL) = GezoLottozahlen(UL)
- TmpZusatzzahlen(UL) = GezoZusatzzahlen(UL)
- Next
- Dim Zähler, Max As Integer
- Dim i, j As Integer
- Dim HL(49) As Integer
- Dim ML(49) As String
- Dim SL(49) As Boolean
- Dim Speicher(2) As String
- Dim n As Integer = 0
- ' Listbox1 wird durch ein Listoff ersetzt
- Finanz.ListBox1.Items.Clear()
- Finanz.ListBox1.Sorted = False
- 250: n = 0
- 260: n = n + 1
- If n = 50 Then GoTo 300
- SL(n) = False
- GoTo 260
- Stop
- 300: Max = 0
- n = 0
- 310: n = (n + 1)
- If n = 50 Then GoTo 350
- If TmpLottozahlen(n) > Max Then Max = TmpLottozahlen(n)
- GoTo 310
- Stop
- 350: Zähler = (Max + 1) : i = 0 : j = 0 : n = 0
- 360: Zähler = (Zähler - 1)
- If Zähler < 0 Then GoTo 600
- 370: i = (i + 1)
- If i = 50 Then i = 0 : GoTo 360
- If TmpLottozahlen(i) = Zähler Then GoTo 380
- GoTo 370
- Stop
- 380: If SL(i) = True Then GoTo 370
- SL(i) = True
- Speicher(2) = CStr(i)
- Speicher(1) = CStr(TmpLottozahlen(i))
- Anzeige = Speicher(1) + " x die " + Speicher(2)
- Finanz.ListBox1.Items.Add(Anzeige)
- GoTo 370
- Stop
- 600: ' Lottozahlen Häufigkeiten aufbereitet
- Finanz.ListBox2.Items.Clear()
- Finanz.ListBox2.Sorted = False
- 650: n = 0
- 660: n = n + 1
- If n = 50 Then GoTo 700
- SL(n) = False
- GoTo 660
- Stop
- 700: Max = 0
- n = 0
- 710: n = (n + 1)
- If n = 50 Then GoTo 750
- If TmpZusatzzahlen(n) > Max Then Max = TmpZusatzzahlen(n)
- GoTo 710
- Stop
- 750: Zähler = (Max + 1) : i = 0 : j = 0 : n = 0
- 760: Zähler = (Zähler - 1)
- If Zähler < 0 Then GoTo 800
- 770: i = (i + 1)
- If i = 50 Then i = 0 : GoTo 760
- If TmpZusatzzahlen(i) = Zähler Then GoTo 780
- GoTo 770
- Stop
- 780: If SL(i) = True Then GoTo 770
- SL(i) = True
- Speicher(2) = CStr(i)
- Speicher(1) = CStr(TmpZusatzzahlen(i))
- Anzeige = Speicher(1) + " x die " + Speicher(2)
- Finanz.ListBox2.Items.Add(Anzeige)
- GoTo 770
- Stop
- 800: ' Zusatzzahlen Häufigkeiten aufbereitet
- With Formular
- .B = "Die Statistik enthält Lottoziehungen vom " & VonDatum & " bis " & BisDatum & "."
- .Excel_Eintragen(False, False, False)
- .Zeilenschaltung(1)
- .B = "Es wurden insgesamt " & AnzahlZiehungen.ToString & " Ziehungen berücksichtigt."
- .Excel_Eintragen(False, False, False)
- .Zeilenschaltung(2)
- .B = "Zahlenauswertung"
- .F = "Häufigkeitsauswertung"
- .Excel_Eintragen(True, False, True)
- .Zeilenschaltung(1)
- .B = "Zahl"
- .C = "Lottozahl"
- .D = "Zusatzzahl"
- .E = "Superzahl"
- .F = "Lottozahl"
- .G = "Zusatzzahl"
- .H = "MZ"
- .Excel_Eintragen(False, False, False)
- .Zeilenschaltung(1)
- End With
- For Awertung As Integer = 0 To 49
- With Formular
- .Zeilenschaltung(1)
- .B = FestLottozahlen(Awertung)
- .C = GezoLottozahlen(Awertung)
- .D = GezoZusatzzahlen(Awertung)
- If Awertung < 10 Then
- .E = GezoSuperzahlen(Awertung)
- End If
- If Awertung > 0 And Awertung < 50 Then
- .F = Finanz.ListBox1.Items(0)
- With Finanz.ListBox1
- .Items.RemoveAt(0)
- .Refresh()
- End With
- .G = Finanz.ListBox2.Items(0)
- With Finanz.ListBox2
- .Items.RemoveAt(0)
- .Refresh()
- End With
- Ausdruck = Nothing
- Ausdruck = Basis.Right(.F, 2)
- If Val(Basis.Left(Ausdruck, 1)) < 1 Then Ausdruck = Basis.Right(.F, 1)
- Statistik_EigeneZahlen_Pruefung(Ausdruck)
- If MeineZahlStatistikDabei = True Then .H = "X"
- If MeineZahlStatistikDabei = False Then .H = Nothing
- End If
- .Excel_Eintragen(False, False, False)
- End With
- Next
- With Formular
- .Drucken_Tabellenblatt()
- .Speichern_und_Schliessen()
- .Excel_Speicher_Entfernung()
- .Excel_Speicher_Entfernung()
- End With
- MsgBox("Die Lottostatistik wurde erstellt. ", MsgBoxStyle.Information, PRGM.Meldung)
[/vb]
Gruß Markus