nobody
18.02.2004, 10:18
Hallo,
ich habe ein Programm begefügt, dass getippte Lottozahlen mit den gezogenen Lottozahlen aus einer Textdatei vergleicht. Wie man sehen kann wurde die Variable Tippzahl mit einem eindimensionalen Array deklariert. Nun muss ich dieses jedoch auch mit einem zweidimensionalen Array hinbekommen. Kann mir vielleicht einer das Programm umschreiben und eine Erklärung beifügen, wie ich das bewerkstelligen kann?
Programm:
Option Explicit
Dim i As Byte
Dim n As Byte
Dim TippZahl(1 To 72) As Byte
Dim Reihe As Byte
Dim Gez_Zahl(1 To 7) As Byte
Dim Richtige As Byte
Dim Zusatz As Boolean
Dim fso, txtfile
Private Sub Command1_Click() 'Datei einlesen
On Error Resume Next 'Fehlerhandling
Set fso = CreateObject("scripting.filesystemobject")
CommonDialog1.ShowOpen
Set txtfile = fso.opentextfile(CommonDialog1.FileName)
For i = 1 To (n * 6) 'Zahlen einlesen und zuordnen
TippZahl(i) = txtfile.readline
Text1(i).Text = Format$(TippZahl(i))
Next i
txtfile.Close
End Sub
Private Sub Command2_Click() 'Programm beenden
Unload Me
End Sub
Private Sub Command3_Click() 'Gezogene Zahlen übernehmen
For i = 1 To 7
Gez_Zahl(i) = Val(Text2(i).Text)
Next i
End Sub
Private Sub Command4_Click() 'Zahlen auswerten
Dim m As Byte
Dim Gewonnen As Boolean
m = 1 'Hilfsvariable Reihenzähler
Gewonnen = False
List1.Clear
For Reihe = 1 To (n * 6 - 5) Step 6
Richtige = 0 'Initialisierung vor jeder Reihenauswertung
Zusatz = False
For i = 1 To 6 'Auswertung der regulären Zahlen
If TippZahl(Reihe + 0) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 1) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 2) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 3) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 4) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 5) = Gez_Zahl(i) Then Richtige = Richtige + 1
Next i
If Richtige >= 3 Then Gewonnen = True
'Auswertung der Zusatzzahl
If TippZahl(Reihe + 0) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 1) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 2) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 3) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 4) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 5) = Gez_Zahl(7) Then Zusatz = True
If Zusatz = True And Richtige > 2 Then List1.AddItem m & ". Reihe: " & Richtige & " Richtige(r) + Zz" _
Else List1.AddItem m & ". Reihe: " & Richtige & " Richtige(r)"
m = m + 1 'Reihenzähler inkrementieren
Next Reihe
List1.AddItem ""
If Gewonnen = True Then List1.AddItem "Herzlichen Glückwunsch!!" _
Else List1.AddItem "S C H A D E !"
End Sub
Private Sub Form_Load()
Form1.Show 'SetFocus funktioniert in der Form_Load
Text3.SetFocus 'NUR, wenn vorher die Show-Methode aufgerufen wurde
Form1.Caption = "Lottozahlen-Checker (c)2004"
Command1.Caption = "Lottozahlen einlesen"
Command2.Caption = "Beenden"
Command3.Caption = "Gezogene Zahlen einlesen"
Command4.Caption = "AUSWERTEN"
Frame1.Caption = "Zusatzzahl"
Frame2.Caption = "Aktuelle Lottozahlen 1 bis 6 bitte hier eingeben"
Label1.Caption = "Anzahl der Spiele : "
Call Clear_Zahlen
'For i = 1 To 7 Löschung muss im Eigenschaftsfenster
' Text2(i).Text = "" gemacht werden, weil ansonsten die Text_Change-
'Next i Routine greift !
Text3.Text = ""
End Sub
Private Sub Text2_Change(Index As Integer)
If Index < 7 Then
If Len(Text2(Index).Text) = 2 Then
Text2(Index + 1).SetFocus
End If
End If
End Sub
Private Sub Text3_Change()
n = Val(Text3.Text)
If Val(Text3.Text) > 12 Then n = 12
Call Clear_Zahlen
End Sub
Private Sub Clear_Zahlen() 'Zahlenmatrix löschen
For i = 1 To 72
Text1(i).Text = ""
Next i
End Sub
Inhalt der Textdatei, die eingelesen wird:
6
5
4
3
2
1
42
38
35
32
25
21
49
38
26
15
11
6
9
8
7
6
5
4
19
18
17
16
15
14
12
25
26
27
45
12
23
35
48
41
38
25
21
40
12
24
16
17
19
38
37
26
18
19
24
29
34
31
41
12
34
21
18
26
27
39
15
24
41
16
43
26
ich habe ein Programm begefügt, dass getippte Lottozahlen mit den gezogenen Lottozahlen aus einer Textdatei vergleicht. Wie man sehen kann wurde die Variable Tippzahl mit einem eindimensionalen Array deklariert. Nun muss ich dieses jedoch auch mit einem zweidimensionalen Array hinbekommen. Kann mir vielleicht einer das Programm umschreiben und eine Erklärung beifügen, wie ich das bewerkstelligen kann?
Programm:
Option Explicit
Dim i As Byte
Dim n As Byte
Dim TippZahl(1 To 72) As Byte
Dim Reihe As Byte
Dim Gez_Zahl(1 To 7) As Byte
Dim Richtige As Byte
Dim Zusatz As Boolean
Dim fso, txtfile
Private Sub Command1_Click() 'Datei einlesen
On Error Resume Next 'Fehlerhandling
Set fso = CreateObject("scripting.filesystemobject")
CommonDialog1.ShowOpen
Set txtfile = fso.opentextfile(CommonDialog1.FileName)
For i = 1 To (n * 6) 'Zahlen einlesen und zuordnen
TippZahl(i) = txtfile.readline
Text1(i).Text = Format$(TippZahl(i))
Next i
txtfile.Close
End Sub
Private Sub Command2_Click() 'Programm beenden
Unload Me
End Sub
Private Sub Command3_Click() 'Gezogene Zahlen übernehmen
For i = 1 To 7
Gez_Zahl(i) = Val(Text2(i).Text)
Next i
End Sub
Private Sub Command4_Click() 'Zahlen auswerten
Dim m As Byte
Dim Gewonnen As Boolean
m = 1 'Hilfsvariable Reihenzähler
Gewonnen = False
List1.Clear
For Reihe = 1 To (n * 6 - 5) Step 6
Richtige = 0 'Initialisierung vor jeder Reihenauswertung
Zusatz = False
For i = 1 To 6 'Auswertung der regulären Zahlen
If TippZahl(Reihe + 0) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 1) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 2) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 3) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 4) = Gez_Zahl(i) Then Richtige = Richtige + 1
If TippZahl(Reihe + 5) = Gez_Zahl(i) Then Richtige = Richtige + 1
Next i
If Richtige >= 3 Then Gewonnen = True
'Auswertung der Zusatzzahl
If TippZahl(Reihe + 0) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 1) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 2) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 3) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 4) = Gez_Zahl(7) Then Zusatz = True
If TippZahl(Reihe + 5) = Gez_Zahl(7) Then Zusatz = True
If Zusatz = True And Richtige > 2 Then List1.AddItem m & ". Reihe: " & Richtige & " Richtige(r) + Zz" _
Else List1.AddItem m & ". Reihe: " & Richtige & " Richtige(r)"
m = m + 1 'Reihenzähler inkrementieren
Next Reihe
List1.AddItem ""
If Gewonnen = True Then List1.AddItem "Herzlichen Glückwunsch!!" _
Else List1.AddItem "S C H A D E !"
End Sub
Private Sub Form_Load()
Form1.Show 'SetFocus funktioniert in der Form_Load
Text3.SetFocus 'NUR, wenn vorher die Show-Methode aufgerufen wurde
Form1.Caption = "Lottozahlen-Checker (c)2004"
Command1.Caption = "Lottozahlen einlesen"
Command2.Caption = "Beenden"
Command3.Caption = "Gezogene Zahlen einlesen"
Command4.Caption = "AUSWERTEN"
Frame1.Caption = "Zusatzzahl"
Frame2.Caption = "Aktuelle Lottozahlen 1 bis 6 bitte hier eingeben"
Label1.Caption = "Anzahl der Spiele : "
Call Clear_Zahlen
'For i = 1 To 7 Löschung muss im Eigenschaftsfenster
' Text2(i).Text = "" gemacht werden, weil ansonsten die Text_Change-
'Next i Routine greift !
Text3.Text = ""
End Sub
Private Sub Text2_Change(Index As Integer)
If Index < 7 Then
If Len(Text2(Index).Text) = 2 Then
Text2(Index + 1).SetFocus
End If
End If
End Sub
Private Sub Text3_Change()
n = Val(Text3.Text)
If Val(Text3.Text) > 12 Then n = 12
Call Clear_Zahlen
End Sub
Private Sub Clear_Zahlen() 'Zahlenmatrix löschen
For i = 1 To 72
Text1(i).Text = ""
Next i
End Sub
Inhalt der Textdatei, die eingelesen wird:
6
5
4
3
2
1
42
38
35
32
25
21
49
38
26
15
11
6
9
8
7
6
5
4
19
18
17
16
15
14
12
25
26
27
45
12
23
35
48
41
38
25
21
40
12
24
16
17
19
38
37
26
18
19
24
29
34
31
41
12
34
21
18
26
27
39
15
24
41
16
43
26