chopper_sp
Messages postés6Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention20 mai 2006
-
29 janv. 2006 à 14:25
cs_Stephane33
Messages postés630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 2011
-
29 janv. 2006 à 19:20
voila voila, au risque de paraitre bête, je me demandais se que pouvait bien signifier le goto, et si on pouvait le changer dans les codes par une autre fonction?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 29 janv. 2006 à 16:27
Il faut absolument éviter d'utiliser des GoTo dans le code (sauf pour les routines de traitement d'erreur ou on n'a pas le choix) :
Un code avec un goto est très souvent difficile à lire, préférez plutôt les fonctions !
chopper_sp
Messages postés6Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention20 mai 2006 29 janv. 2006 à 17:03
ma prof de vb ma dit de remplacer ce GOTO par un DO LOOP
voici le bout de programme que j'aimerais remplacer pouvez vous m'aider à le modifier car pour l'examum le GOTO n'est pas du tout indiquer
If Label1.Caption = "" Then GoTo error1
GoTo alors
If Form2.Option1 = True Then
multi = 2
End If
End Sub
Private Sub Form_Activate()
Timer1.Enabled = False
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii > 91 Then
KeyAscii = KeyAscii - 32
If Label1.Caption = "Perdu" Then GoTo error1
Label1.Refresh
End If
If (KeyAscii <> i) Then
If Label1.Caption = "" Then GoTo error1
GoTo alors
End If
If (KeyAscii = i) Then
Timer1.Enabled = False
If Form2.Option1 = True Then
duree = duree / 1.5
duree = Format(duree, "#")
resultat = duree
End If
If Form2.Option2 = True Then
duree = duree / 1.25
End If
If Form2.Option3 = True Then
duree = duree / 1
duree = Format(duree, "#")
resultat = duree
End If
End If
Select Case duree
Case 0 To 55
Label1.Caption = "Parfait" & ", votre score est de" & " " & resultat & " " & "points
Case 56 To 95
Label1.Caption = "Super" & ", votre score est de" & " " & resultat & " " & "points"
Case 96 To 135
Label1.Caption = "Bien" & ", votre score est de" & " " & resultat & " " & "points"
Case 136 To 175
Label1.Caption = "Moyen" & ", votre score est de" & " " & resultat & " " & "points"
Case Else
Label1.Caption = "Nul" & ", votre score est de" & " " & resultat & " " & "points"
End Select
Exit Sub
error1: MsgBox "Aucune touche n'a été affichée", vbOKOnly, "Erreur"
alors: MsgBox "Faux,la touche à taper était " & Chr$(i), vbOKOnly, "Perdu"
Label1.Caption = "Perdu"
End Sub
Private Sub option_Click()
Timer1.Enabled = False
Form2.Show
End Sub
Private Sub quitter_Click()
Timer1.Enabled = False
Form3.Show
End Sub
Private Sub Timer1_Timer()
duree = (duree + Timer1.Interval)
cs_Stephane33
Messages postés630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 20111 29 janv. 2006 à 18:13
Imbrique ta condition dans le traitement de ta fonction ce la donnerais
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii > 91 Then
KeyAscii = KeyAscii - 32
If Label1.Caption = "Perdu" Then MsgBox "Aucune touche n'a été affichée", vbOKOnly, "Erreur"
Label1.Refresh
End If
If (KeyAscii <> i) Then
If Label1.Caption = "" Then
MsgBox "Aucune touche n'a été affichée", vbOKOnly, "Erreur"
MsgBox "Faux,la touche à taper était " & Chr$(i), vbOKOnly, "Perdu"
Label1.Caption = "Perdu"
else
If (KeyAscii = i) Then
Timer1.Enabled = False
If Form2.Option1 = True Then
duree = duree / 1.5
duree = Format(duree, "#")
resultat = duree
End If
If Form2.Option2 = True Then
duree = duree / 1.25
End If
If Form2.Option3 = True Then
duree = duree / 1
duree = Format(duree, "#")
resultat = duree
End If
End If
Select Case duree
Case 0 To 55
Label1.Caption = "Parfait" & ", votre score est de" & " " & resultat & " " & "points
Case 56 To 95
Label1.Caption = "Super" & ", votre score est de" & " " & resultat & " " & "points"
Case 96 To 135
Label1.Caption = "Bien" & ", votre score est de" & " " & resultat & " " & "points"
Case 136 To 175
Label1.Caption = "Moyen" & ", votre score est de" & " " & resultat & " " & "points"
Case Else
Label1.Caption = "Nul" & ", votre score est de" & " " & resultat & " " & "points"
End Select
End if
end sub
quelque chose dans ce genre la
Il est vrai que Goto est une solution de facilité je l'avoue mais à éviter
deplus avec VB.net et une gestion des erreurs (try/cacth/endTry)on ne devrait plus en voir
chopper_sp
Messages postés6Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention20 mai 2006 29 janv. 2006 à 18:24
j'ai bien fait ce que tu m'a dit, maintenant il me compte la bonne reponse fausse, et la fausse comme étant la bonne
je vais regarder plus en détail merci tout de même
cs_Stephane33
Messages postés630Date d'inscriptionsamedi 15 février 2003StatutModérateurDernière intervention 9 octobre 20111 29 janv. 2006 à 19:20
oui normal ya celle ligne
If (KeyAscii <> i) Then
d'ailleurs je n'ai pas vu la fin de cette clause
J'essaye de comprendre
Si ton Keyascii est > 91 tu retire 32 et si caption = perdu alors message "Aucune touche... "
si tu veux sortir rajoute Exit Sub
Si label.caption ="" alors msgbox aucune touche , fallait taper
Sinon
Si KeyAscii = i alors traitement
essaye de préciser ce que tu veux
Peut-être écrire une procedure du type
If Label1.caption = "Perdu" then
..........
ElseIf Label1.caption="" then
................
Else
..............
Endif