Timer [Résolu]

Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 29 juin 2017 à 17:01 - Dernière réponse : Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention
- 12 juil. 2017 à 15:22
Bonjour , je suis un-peux bloquer à un chapitre d'un cours dans ce cours il y ce code

Public Class Form1
Private Sub TIM_TIM_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TIM_TIM.Tick
Dim Tourne As Boolean = True
Dim Bouton As Integer = 0

'Rassemble tous les boutons radio dans un tableau
Dim RB(9) As RadioButton
RB(0) = Me.RB_1
RB(1) = Me.RB_2
RB(2) = Me.RB_3
RB(3) = Me.RB_4
RB(4) = Me.RB_5
RB(5) = Me.RB_6
RB(6) = Me.RB_7
RB(7) = Me.RB_8
RB(8) = Me.RB_9
RB(9) = Me.RB_10

While Tourne
'Si on est arrivé au bout du tableau, on sort de cette boucle
If Bouton = 10 Then
Tourne = False
Else
'Si le bouton actuellement parcouru est activé
If RB(Bouton).Checked Then
'Et si ce n'est pas le dernier
If RB(Bouton) IsNot RB(9) Then
'on active celui d’après et on sort de la boucle
RB(Bouton + 1).Checked = True
Tourne = False
Else
'Sinon on reprend au premier
Me.RB_1.Checked = True
End If
End If
'On incrémente le compteur
Bouton = Bouton + 1
End If
End While
End Sub


End Class


voici le cours https://openclassrooms.com/courses/apprenez-a-programmer-en-vb-net/les-timers-1

ce que j'arrive pas à comprendre c'est la variable Bouton comment peut-elle garder sa valeur puisque qu'à chaque nouveau passage dans l'événement la variable devient 0 et aussi je comprend pas le boolean Tourne je vois pas à quoi il sert puisque dans tout les cas il devient False

bref je voulais avoir un-peux plus d'éclaircissement sur ce code merci d'avance :)
Afficher la suite 

46 réponses

Répondre au sujet
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 29 juin 2017 à 18:12
0
Utile
1
Bonjour

Est-ce que tu as exécuté ce code en pas à pas?
Je ne pense pas, car si tu l'avais fait tu ne devrais pas avoir l'analyse que tu as.

Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 29 juin 2017 à 18:57
oui j'ai exécuter le code pas à pas et quand ça sort de la boucle l'événement recommence la variable Bouton n'atteint jamais 9 , en tout cas pour moi
Commenter la réponse de Whismeril
cs_ShayW 3233 Messages postés jeudi 26 novembre 2009Date d'inscription 6 décembre 2017 Dernière intervention - 29 juin 2017 à 21:05
0
Utile
21
Salut

la variable Bouton n'atteint jamais 9

explique pourquoi ? ou comment on sort de la boucle ?
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 2 juil. 2017 à 03:17
http://www.zimagez.com/zimage/test1212.php

la voici

Le "IsNot" de
If RB(Bouton) IsNot RB(9) Then


veut bien dire "n'est pas" ?
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 2 juil. 2017 à 08:20
variables ça fais &H0

va est un short, et manifestement VS te l'affiche en hexadécimal.

Le "IsNot" de
If RB(Bouton) IsNot RB(9) Then
veut bien dire "n'est pas" ?

oui
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 3 juil. 2017 à 23:11
sur d'ancien projet les variables s'affiches en décimal et sur les nouveaux ils s'affichent en hexa bizarre , peut-être qu'il y a un paramètre pour régler ça ?
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 3 juil. 2017 à 23:15
Sans doute, mais je ne sais pas lequel
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 6 juil. 2017 à 19:06
ok merci
Commenter la réponse de cs_ShayW
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 6 juil. 2017 à 23:13
0
Utile
1
Sinon, regarde ça
    Dim index As Integer = 0

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim RB() As RadioButton = {RadioButton1, RadioButton2, RadioButton3, RadioButton4, RadioButton5, RadioButton6, RadioButton7, RadioButton8, RadioButton9, RadioButton10}
        RB(index).Checked = True
        index += 1
        If index = 10 Then
            index = 0
        End If
    End Sub


Un peu plus simple non?
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 7 juil. 2017 à 20:20
comment tu fais pour que la variable index soit utilisable dans l'événement ?
dans le cours ils disent aussi qu'on aurai pu déclarer au Load ce que j'ai essayé bien avant de voir qu'il le dit mais perso je peux pas
Commenter la réponse de Whismeril
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - Modifié par Whismeril le 7/07/2017 à 22:55
0
Utile
19
Il y a 2 choses à comprendre
  • la portée d'une variable
  • la différence entre déclaration et initialisation.

La portée

c'est la "zone" du code ou cette variable est vue.
Typiquement, dans un même fichier, la porté est bornée par un block
trucmuche


end trucmuche

Déclaration et initialisation

La déclaration est "la naissance" de la variable, une fois qu'elle est déclarée, elle existe, mais elle n'est pas utilisable.
Pour être utilisable, il faut lui donner une valeur de départ, c'est l'initialisation.




Dans, une méthode, une boucle, un bloc quelconque, les instructions sont exécutées dans l'ordre ou elles sont écrites, la variable "nait" donc, à sa déclaration, est utile à partir de son initialisation et "meure" à la fin de sa portée.

Dans une classe (un Form, c'est un type de classe), il n'y a pas d'ordre particulier entre les différentes méthode, une variable dont la portée s'étend à toute la classe peut être déclarée n'importe ou au niveau de la classe

Si j'écris
class Toto

    Dim index as Integer

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


    End Sub

    Dim valeur as Double
end class
index et valeur seront toutes deux vues dans la méthode Timer1_Tick.

Cependant, si elle n'ont pas de valeur au moment ou tu veux les utiliser, ça va coincer. Et initialiser une variable dans un timer, revient à lui donner la même valeur tout le temps, c'est plus vraiment une variable.
On pourrait s'en démerder avec un if, mais c'est ce compliquer la vie pour rien.

Les 2 options, les plus simples sont soit d'initialiser directement la variable, comme je te m'ai montré, soit de les initialiser dans le Load ou le New qui seront effectivement exécutés avant le Tick du timer


class Toto
    Public sub New()
       index = 1'initialisation de la variable déclarée plus bas
    end sub

    Dim index as Integer

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick


    End Sub

    Dim valeur as Double = 1.2'déclaration et intialisation
end class

Quand Timer1_Tick sera exécutée pour la première fois index vaudra 1 et valeur 1.2




Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 11 juil. 2017 à 19:13
ok donc ce fichier sert à avoir le code , les déclaration etc... des contrôles et permet aussi d'afficher les contrôles en mode design ?

mais tu avais dis qu'il y avait deux fichiers ?

Comme je te l'ai déjà dit, ce qui est hors méthode n'a pas d'ordre précis, et comme les contrôles sont interdépendants, si tu ne le sont initialises pas dans le bon ordre (comme pour le tableau) ça merde.

ouais pour savoir ou exécuter le contrôles quoi ?
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 12 juil. 2017 à 01:09
Oui il y a deux fichiers, le 2eme c'est celui que tu utlises.
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 12 juil. 2017 à 13:42
donc 1 fichier pour le code des contrôles , des déclaration des contrôles etc... et ce même fichier on l'utilise dans le mode design ?

et le deuxième c'est le code avec les événement etc ... ?
Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention > Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention - 12 juil. 2017 à 14:53
Oui c'est ca
Hixale 219 Messages postés samedi 25 février 2017Date d'inscription 16 septembre 2017 Dernière intervention > Whismeril 10817 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 janvier 2018 Dernière intervention - 12 juil. 2017 à 15:22
ah d'accord ok et que le fichier mode design est masqué ?

je pensé enfaîte qu'il y avait deux fichiers pour le mode design...
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.