VB6 Variable oder String erstellen...

  • VB6

Es gibt 54 Antworten in diesem Thema. Der letzte Beitrag () ist von FormFollowsFunction.

    kurze frage für zwischen durch habe einen würfel programiert + counter
    mein problem der counter wird immer zu 6 ich vermute " For i = 0 To " ist das problem

    Visual Basic-Quellcode

    1. Private Sub Form_Load()
    2. Dim C As Byte
    3. C = 1
    4. End Sub
    5. Private Sub Würfeln_Knopf_Click()
    6. Randomize Timer
    7. w = Int(1 + Rnd * 6)
    8. For i = 0 To 6
    9. Shape2.Visible = False
    10. Shape3.Visible = False
    11. Shape4.Visible = False
    12. Shape5.Visible = False
    13. Shape6.Visible = False
    14. Shape7.Visible = False
    15. Shape8.Visible = False
    16. Label2.Caption = C
    17. C = C + 1
    18. Next
    19. If w = 1 Then
    20. Shape2.Visible = True
    21. End If
    22. If w = 2 Then
    23. Shape3.Visible = True
    24. Shape4.Visible = True
    25. End If
    26. If w = 3 Then
    27. Shape2.Visible = True
    28. Shape3.Visible = True
    29. Shape4.Visible = True
    30. End If
    31. If w = 4 Then
    32. Shape3.Visible = True
    33. Shape4.Visible = True
    34. Shape5.Visible = True
    35. Shape6.Visible = True
    36. End If
    37. If w = 5 Then
    38. Shape2.Visible = True
    39. Shape3.Visible = True
    40. Shape4.Visible = True
    41. Shape5.Visible = True
    42. Shape6.Visible = True
    43. End If
    44. If w = 6 Then
    45. Shape3.Visible = True
    46. Shape4.Visible = True
    47. Shape5.Visible = True
    48. Shape6.Visible = True
    49. Shape7.Visible = True
    50. Shape8.Visible = True
    51. End If
    52. End Sub

    Immortep99 schrieb:

    For i = 0 To 6
    Shape2.Visible = False
    Shape3.Visible = False
    Shape4.Visible = False
    Shape5.Visible = False
    Shape6.Visible = False
    Shape7.Visible = False
    Shape8.Visible = False
    Label2.Caption = C
    C = C + 1
    Next

    Das ist die Initialisierung, wozu die sieben mal ausführen?
    Entweder

    VB.NET-Quellcode

    1. ​Shape2.Visible = False
    2. Shape3.Visible = False
    3. Shape4.Visible = False
    4. Shape5.Visible = False
    5. Shape6.Visible = False
    6. Shape7.Visible = False
    7. Shape8.Visible = False
    8. Label2.Caption = w

    Oder gleich

    VB.NET-Quellcode

    1. For Each Shape In {Shape2,Shape3,Shape4,Shape5,Shape6,Shape7,Shape8}
    2. Shape.Visible = False
    3. Next
    4. Label2.Caption = w
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Du willst doch aber nur die eine (zufällige) Würfelseite anzeigen.
    Du hast auch nur die eine.

    Es reicht einmal initialisieren und w anstatt C anzuzeigen.


    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Zeile 18 und 19 unter das Next:

    Visual Basic-Quellcode

    1. Private Sub Würfeln_Knopf_Click()
    2. Randomize Timer
    3. w = Int(1 + Rnd * 6)
    4. 'For i = 0 To 6 <- wozu die Schleife?
    5. Shape2.Visible = False
    6. Shape3.Visible = False
    7. Shape4.Visible = False
    8. Shape5.Visible = False
    9. Shape6.Visible = False
    10. Shape7.Visible = False
    11. Shape8.Visible = False
    12. 'Next
    13. Label2.Caption = C
    14. C = C + 1

    sonst wird C pro Klick immer 6x um 1 erhöht
    Randomize timer sollte doch auch außerhalb der Würfel-Click-Prozedur reichen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    mein counter bleibt jetzt auf 1 stehen habe quelltext noch ein bischen erweitert
    wenn ich Next schreibe gibt er ein fehler " Next ohne For"

    Visual Basic-Quellcode

    1. Private Sub Würfel_Load()
    2. Dim Counter As Byte
    3. Counter = 1
    4. End Sub
    5. Private Sub Command1_Click()
    6. Counter = 1
    7. List1.Clear
    8. End Sub
    9. Private Sub Würfeln_Knopf_Click()
    10. Randomize Timer
    11. w = Int(1 + Rnd * 6)
    12. Shape2.Visible = False
    13. Shape3.Visible = False
    14. Shape4.Visible = False
    15. Shape5.Visible = False
    16. Shape6.Visible = False
    17. Shape7.Visible = False
    18. Shape8.Visible = False
    19. Label3.Caption = w
    20. Label2.Caption = Counter
    21. Counter = Counter + 1
    22. Text1.Text = (Counter & " " & "Wurf ergab" & " " & w)
    23. List1.AddItem Text1.Text
    24. Text1.Text = ""

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

    Ok, Next gehört natürlich immer zu einem For. Ich wollt nur klarmachen, dass Counter = Counter + 1 nicht in eine For-Schleife gehört, weil ja dann zu oft gezählt wird.
    Command1 setzt den Counter auf 1. Ok
    Würfeln_Knopf_Click sollte den Counter immer um 1 erhöhen. Laut Code tut er dies.

    btw: Text1.Text = (Counter & " " & "Wurf ergab" & " " & w) => Text1.Text = (Counter & ". Wurf ergab " & w)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Gegenfrage: Zu welchem Zweck willst/brauchst Du eine?
    Sinn der For-Schleife: Irgendwas x-mal wiederholen.

    Visual Basic-Quellcode

    1. For i = 1 to 10
    2. 'blablabla, was in diesem Fall 10x wiederholt werden soll
    3. Next

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Na, das sieht doch sinnvoll aus. Passt doch.
    Dazu müssen natürlich alle Shapes »Shape1« heißen und deren Index passend von 0 bis ... ach Stop!
    Du hast 6 Figuren => i muss von 0 bis 5 gehen: 0, 1, 2, 3, 4, 5 = 6 Figurenindizes
    Wenn Du von 0-6 zählst, kommt es zu Crash.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Was genau erklären?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Visual Basic-Quellcode

    1. Private Sub Würfeln_Knopf_Click()
    2. Randomize Timer
    3. w = Int(1 + Rnd * 6)
    4. For i = 0 to 5 '*
    5. Shape1(i).Visible = False
    6. next

    *es wird hier nur von Null bis Fünf gezählt, da Du 6 Figuren hast, die hoffentlich alle Shape1 heißen und im Index mit Null bis Fünf durchnummeriert sind
    Figur 1: Name = Shape1, Index = 0
    Figur 2: Name = Shape1, Index = 1
    Figur 3: Name = Shape1, Index = 2
    Figur 4: Name = Shape1, Index = 3
    Figur 5: Name = Shape1, Index = 4
    Figur 6: Name = Shape1, Index = 5
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Habe geändert nun ist der counter aber nicht Funktionstüchtig habe 7 shapes da 1,3,5 den Punkt in der Mitte haben

    Visual Basic-Quellcode

    1. Private Sub Würfel_Load()
    2. Dim Counter As Byte
    3. Counter = 1
    4. End Sub
    5. Private Sub Command1_Click()
    6. Counter = 1
    7. List1.Clear
    8. End Sub
    9. Private Sub Würfeln_Knopf_Click()
    10. Randomize Timer
    11. w = Int(1 + Rnd * 6)
    12. For i = 0 To 6 '*
    13. Shape1(i).Visible = False
    14. Next
    15. Label3.Caption = w
    16. Label2.Caption = Counter
    17. Text1.Text = (Counter & ". Wurf ergab " & w)
    18. List1.AddItem Text1.Text
    19. Counter = Counter + 1
    20. Text1.Text = ""
    21. If w = 1 Then
    22. Shape1(4).Visible = True
    23. End If