Problem mit While-schleife

  • VB6

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Major.

    Problem mit While-schleife

    Hi@all:

    Ich habe folgendes Problem.
    Ich hab ne Anwendung in der alle 60 sekunden in einem Label die Caption geändert wird.
    Nun will ich aber überprüfen welcher Monat drinsteht als Caption und dementsprechend ein Bild in ein Imagefeld laden.
    Doch ich habe mit der While-schleife so meine Probleme jedesmal wenn der nächste Monat kommt, hängt sich das Programm auf.
    Hie rmal de Source:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim monate As Integer
    3. Dim mond As Integer
    4. Private Sub cmd_ende_Click()
    5. End
    6. End Sub
    7. Private Sub timer_monat_Timer()
    8. timer_monat.Interval = 1000
    9. monate = monate + 1
    10. If monate = 5 Then
    11. Select Case lbl_monat.Caption
    12. Case "Jänner": lbl_monat.Caption = "Februar"
    13. Case "Februar": lbl_monat.Caption = "März"
    14. Case "März": lbl_monat.Caption = "April"
    15. Case "April": lbl_monat.Caption = "Mai"
    16. Case "Mai": lbl_monat.Caption = "Juni"
    17. Case "Juni": lbl_monat.Caption = "Juli"
    18. Case "Juli": lbl_monat.Caption = "August"
    19. Case "August": lbl_monat.Caption = "September"
    20. Case "September": lbl_monat.Caption = "Oktober"
    21. Case "Oktober": lbl_monat.Caption = "November"
    22. Case "Dezember": lbl_monat.Caption = "Dezember"
    23. End Select
    24. monate = 0
    25. End If
    26. While monate < 5
    27. If lbl_monat.Caption = "Jänner" Then
    28. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    29. If lbl_monat.Caption = "Februar" Then
    30. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    31. If lbl_monat.Caption = "März" Then
    32. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    33. If lbl_monat.Caption = "April" Then
    34. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    35. If lbl_monat.Caption = "Mai" Then
    36. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    37. If lbl_monat.Caption = "Juni" Then
    38. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    39. If lbl_monat.Caption = "juli" Then
    40. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    41. If lbl_monat.Caption = "August" Then
    42. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    43. If lbl_monat.Caption = "September" Then
    44. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    45. If lbl_monat.Caption = "Oktober" Then
    46. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    47. If lbl_monat.Caption = "November" Then
    48. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    49. If lbl_monat.Caption = "Dezember" Then
    50. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    51. End If
    52. End If
    53. End If
    54. End If
    55. End If
    56. End If
    57. End If
    58. End If
    59. End If
    60. End If
    61. End If
    62. End If
    63. Wend
    64. End Sub


    Was stimmt bei der Schleife nicht?

    Ich hoffe ihr könnt mir helfen.
    ähm, damit monate 5 WERDEN, musst du sie erstmal vergrößern

    Visual Basic-Quellcode

    1. monate = monate + 1


    da du es nicht tust komm er nichtmal aus While raus, denke ich mal ;)

    EDIT//Ersetze mal

    Visual Basic-Quellcode

    1. While monate < 5
    durch

    Visual Basic-Quellcode

    1. If monate < 5 Then


    mal gucken, was rauskommt ;)

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

    Original von Nikolai
    ähm, damit monate 5 WERDEN, musst du sie erstmal vergrößern

    Visual Basic-Quellcode

    1. monate = monate + 1


    da du es nicht tust komm er nichtmal aus While raus, denke ich mal ;)


    öhm..das tu ich doch
    ?(

    SO jez bricht er nicht ab oder hängt sich auf, aber ide bilder werden nicht geladen.

    RE: Problem mit While-schleife

    Original von Major

    Visual Basic-Quellcode

    1. While monate < 5
    2. If lbl_monat.Caption = "Jänner" Then
    3. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    4. If lbl_monat.Caption = "Februar" Then
    5. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    6. If lbl_monat.Caption = "März" Then
    7. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    8. If lbl_monat.Caption = "April" Then
    9. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    10. If lbl_monat.Caption = "Mai" Then
    11. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    12. If lbl_monat.Caption = "Juni" Then
    13. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    14. If lbl_monat.Caption = "juli" Then
    15. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    16. If lbl_monat.Caption = "August" Then
    17. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    18. If lbl_monat.Caption = "September" Then
    19. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    20. If lbl_monat.Caption = "Oktober" Then
    21. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    22. If lbl_monat.Caption = "November" Then
    23. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    24. If lbl_monat.Caption = "Dezember" Then
    25. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    26. End If
    27. End If
    28. End If
    29. End If
    30. End If
    31. End If
    32. End If
    33. End If
    34. End If
    35. End If
    36. End If
    37. End If
    38. Wend


    guck mal, z.B. monate ist gleich 0

    dann geht er in die schleife rein

    und macht solange monate kleiner als 0 sind

    und monate werden IN DER SCHLEIFE nicht verändert, das heißt er läuft endlos!!!
    Hallo,
    Ok ich hab den Code mal getestet. bei mir hat es sich gleich beim Start aufgehängt. Das Problem ist dein While denke ich. Das While ist ja im Timer selbst drin. Versuch es mal ohne das. Bau notfalls dafür noch einen 2. Timer ein. Während While läuft kann die Anwendung nicht aktualisiert werden. Das heißt, auch der Timer bleibt stehen.

    Versuch es mal so:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim monate As Integer
    3. Dim mond As Integer
    4. Private Sub cmd_ende_Click()
    5. End
    6. End Sub
    7. Private Sub timer_monat_Timer()
    8. timer_monat.Interval = 1000
    9. monate = monate + 1
    10. If monate = 5 Then
    11. Select Case lbl_monat.Caption
    12. Case "Jänner": lbl_monat.Caption = "Februar"
    13. Case "Februar": lbl_monat.Caption = "März"
    14. Case "März": lbl_monat.Caption = "April"
    15. Case "April": lbl_monat.Caption = "Mai"
    16. Case "Mai": lbl_monat.Caption = "Juni"
    17. Case "Juni": lbl_monat.Caption = "Juli"
    18. Case "Juli": lbl_monat.Caption = "August"
    19. Case "August": lbl_monat.Caption = "September"
    20. Case "September": lbl_monat.Caption = "Oktober"
    21. Case "Oktober": lbl_monat.Caption = "November"
    22. Case "Dezember": lbl_monat.Caption = "Dezember"
    23. End Select
    24. monate = 0
    25. End If
    26. if monate < 5 Then
    27. If lbl_monat.Caption = "Jänner" Then
    28. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    29. If lbl_monat.Caption = "Februar" Then
    30. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    31. If lbl_monat.Caption = "März" Then
    32. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    33. If lbl_monat.Caption = "April" Then
    34. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    35. If lbl_monat.Caption = "Mai" Then
    36. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    37. If lbl_monat.Caption = "Juni" Then
    38. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    39. If lbl_monat.Caption = "juli" Then
    40. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    41. If lbl_monat.Caption = "August" Then
    42. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    43. If lbl_monat.Caption = "September" Then
    44. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    45. If lbl_monat.Caption = "Oktober" Then
    46. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    47. If lbl_monat.Caption = "November" Then
    48. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    49. If lbl_monat.Caption = "Dezember" Then
    50. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    51. End If
    52. End If
    53. End If
    54. End If
    55. End If
    56. End If
    57. End If
    58. End If
    59. End If
    60. End If
    61. End If
    62. End If
    63. End If
    64. End Sub


    Gruß
    ~blaze~
    Das kann auch nicht gehen, wenn lbl_monat.Caption = "Jänner" ist, kann es nicht auch gleichzeitig "Februar" sein, du darfst die If-Anweisungen also nicht verschachtelt, sondern mit elseif oder jeder if für sich.
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Den meinem und dem Agent Tipps zu folge...

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim monate As Integer
    3. Dim mond As Integer
    4. Private Sub cmd_ende_Click()
    5. End
    6. End Sub
    7. Private Sub timer_monat_Timer()
    8. timer_monat.Interval = 1000
    9. monate = monate + 1
    10. If monate = 5 Then
    11. Select Case lbl_monat.Caption
    12. Case "Jänner": lbl_monat.Caption = "Februar"
    13. Case "Februar": lbl_monat.Caption = "März"
    14. Case "März": lbl_monat.Caption = "April"
    15. Case "April": lbl_monat.Caption = "Mai"
    16. Case "Mai": lbl_monat.Caption = "Juni"
    17. Case "Juni": lbl_monat.Caption = "Juli"
    18. Case "Juli": lbl_monat.Caption = "August"
    19. Case "August": lbl_monat.Caption = "September"
    20. Case "September": lbl_monat.Caption = "Oktober"
    21. Case "Oktober": lbl_monat.Caption = "November"
    22. Case "Dezember": lbl_monat.Caption = "Dezember"
    23. End Select
    24. monate = 0
    25. End If
    26. If monate < 5 Then
    27. If lbl_monat.Caption = "Jänner" Then
    28. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    29. ElseIf lbl_monat.Caption = "Februar" Then
    30. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    31. ElseIf lbl_monat.Caption = "März" Then
    32. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    33. ElseIf lbl_monat.Caption = "April" Then
    34. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    35. ElseIf lbl_monat.Caption = "Mai" Then
    36. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    37. ElseIf lbl_monat.Caption = "Juni" Then
    38. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    39. ElseIf lbl_monat.Caption = "juli" Then
    40. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    41. ElseIf lbl_monat.Caption = "August" Then
    42. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    43. ElseIf lbl_monat.Caption = "September" Then
    44. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    45. ElseIf lbl_monat.Caption = "Oktober" Then
    46. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    47. ElseIf lbl_monat.Caption = "November" Then
    48. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    49. ElseIf lbl_monat.Caption = "Dezember" Then
    50. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    51. End If
    52. End If
    53. End Sub
    oder benutzte am besten die Select Case Funktion ^^

    Also:

    Visual Basic-Quellcode

    1. Select Case lbl_monat.Caption
    2. Case "Jänner"
    3. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    4. Case "Februar"
    5. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    6. Case "März"
    7. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    8. Case "April"
    9. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    10. Case "Mai"
    11. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\CLOUD.ICO")
    12. Case "Juni"
    13. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    14. Case "Juli"
    15. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    16. Case "August"
    17. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SUN.ICO")
    18. Case "September"
    19. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    20. Case "Oktover"
    21. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    22. Case "November"
    23. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\RAIN.ICO")
    24. Case "Dezember"
    25. img_wetter.Picture = LoadPicture("C:\Dokumente und Einstellungen\Max@Home\Eigene Dateien\Programmieren\VB\TEst\Icons\SNOW.ICO")
    26. End Select


    Vielleicht kannst du auch noch z.B. statt Case "Jänner" und Case "Dezember" Case "Jänner" And "Dezember" einsetzen. Da weiß ich allerdings nicht ob es funktioniert ^^

    Gruß
    ~blaze~