Page 1 sur 1

Problem de fermeture de boucle

Posté : mar. 09 janv. 2024 05:23
par DevPro
Bonjour.

J'utilise ce code quej'ai tyrouvé dans la doc :

Code : Tout sélectionner

    GUICreate("My GUICtrlRead")

    Local $idMenu1 = GUICtrlCreateMenu("File")

    Local $idList = GUICtrlCreateList("", 10, 10, -1, 100)
    GUICtrlSetData(-1, "item1|item2|item3", "item2")

    Local $idButton = GUICtrlCreateButton("Read", 10, 110, 50)

    GUISetState(@SW_SHOW) 
    Local $idMsg, $iMenustate, $sMenutext
    Do
        $idMsg = GUIGetMsg()
        If $idMsg = $idButton Then
            MsgBox($MB_SYSTEMMODAL, "Selected listbox entry", GUICtrlRead($idList))
            $sMenutext = GUICtrlRead($idMenu1, 1)
            MsgBox($MB_SYSTEMMODAL, "State and text of the menuitem", "state:" & $iMenustate & @CRLF & "text:" & $sMenutext)
        EndIf
    Until $idMsg = $GUI_EVENT_CLOSE

MsgBox(0, '', 'test')
Le problème est que si je ferme pas la GUI la suite du script reste bloqué.

Pourtant les boutons marche bien.
Je suis un eu perdu desolé

CDT

Re: Problem de fermeture de boucle

Posté : mar. 09 janv. 2024 14:07
par mikell
Bin c'est normal... tu as une boucle infinie

    Do
        $idMsg = GUIGetMsg()
       ; ...
    Until $idMsg = $GUI_EVENT_CLOSE

dont tu ne peux sortir que par un $GUI_EVENT_CLOSE qui ferme la gui, donc il te faut trouver un autre moyen d'en sortir (par exemple mettre un Exitloop après la 2ème Msgbox, etc)
NB : si le script doit continuer après la boucle, clairement il vaut mieux utiliser une boucle While

Re: Problem de fermeture de boucle

Posté : mer. 24 janv. 2024 06:35
par Phil
Bonjour,

Effectivement, l'utilisation de cette boucle peut facilement entraîner des boucles infinies si elle n'est pas bien gérée. Dans le contexte de la programmation, comme dans le SEO, il est crucial d'optimiser les structures pour éviter les pièges. Tout comme on utilise des balises et des mots-clés pertinents pour améliorer le référencement d'un site, ici, l'utilisation d'une boucle "While" pourrait être plus appropriée pour un contrôle plus précis, évitant ainsi le blocage dans une boucle infinie. Cela permettrait au script de continuer à fonctionner de manière efficace et optimisée, un peu comme une page web bien structurée pour le SEO.