themik
Messages postés40Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention10 novembre 2006
-
7 août 2006 à 17:13
OneHacker -
12 avril 2007 à 15:37
Salut,
La ji comprend rien, j'ai mis beaucoup de DoEvents dans mon programmes et il reste une fonction qui n'est pas capable déffectuer si je ne suis pas en mode débogueur. Quelqu'un peu m'expliquer pourquoi ?
cs_darunia
Messages postés354Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 mars 20112 9 août 2006 à 09:15
Doevents qui est suposer de lui laisser le temps de se connecté à l'ordinateur
DoEvents n'est pas censé laisser de temps !
DoEvents sert a traiter les messages de la fenetre qui sont en attente. Si y a pas de message en attente ...
Pour info, voici ce que fait l'instruction DoEvents en win32 :
Private Const PM_REMOVE = &H1
Dim CurrMsg As MSG
Do While PeekMessage(CurrMsg, 0, 0, 0, PM_REMOVE) <> 0 //Extrait le message de la file (tq qu'il y en a)
TranslateMessage CurrMsg //Traduit le message
DispatchMessage CurrMsg //Envoie le message à la procedure de gestion des messages
Loop
Met un sleep a la place de ton DoEvents (???) et regarde du coté de l'instruction lock pour l'exclusion mutuelle.
themik
Messages postés40Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention10 novembre 2006 7 août 2006 à 17:22
Bah je vais te donner le boute de code ki narrive pas a avoir acces sans le mode débougeur:
Ce if la on dirais qui veux pas le faire si il est pas en mode débug...
If Trim(Enregistrement.strNewNick) Nick And Trim(Mid(Enregistrement.StrMessage, 1, 16)) <> "***** Quit *****" And UCase(Trim(Enregistrement.strTime)) <> "FINDIPREP" And UCase(Trim(Enregistrement.StrMessage)) "OPENPV" Then
PriverNickOpen = Trim(Enregistrement.strNick)
'Demande s'il accepte ou pas le Privé
Reponse = "Oui"
If Reponse = "Oui" Then
VbYes2 = "Oui"
'Verifie s'il est encore sur la conversation avant d'ouvrir le privé
EncoreLa = False
For i = 0 To intNbreEnregistrement
If Trim(TxtUser.List(i)) = Trim(PriverNickOpen) Then
EncoreLa = True
DoEvents
Exit For
End If
Next
'S'il est encore sur la conversation, l'ouvrir sinon, non.
If EncoreLa = True Then
'Enregistre le message qu'il à été accetper.
Enregistrement.strTime = "PVMSG"
Enregistrement.strNick = Nick
Enregistrement.StrMessage = "PVACCEPTER"
Enregistrement.strNewNick = PriverNickOpen
intNbreEnregistrement = intNbreEnregistrement + 1
Put #1, intNbreEnregistrement, Enregistrement
DoEvents
Winsock1.SendData ("PVMSG" & Enregistrement.strNick & Enregistrement.StrMessage & Enregistrement.strNewNick)
PriverOpen
End If
Else
themik
Messages postés40Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention10 novembre 2006 7 août 2006 à 18:35
Excuse moi,
Je m'explique.. Quand je passe le mode débogue, je le voie exactement il fait tout correctement, il éxécute le If que je vous ai montrer en haut. Lorsque je l'éxécute normalement, il n'éxécute pas le If... Comment je fait pour savoir sa ? Il n'ajoute pas le "PVACCEPTER" dans le fichier texte comme il devrais le faire et n'envoie pas de commande au serveur.
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 7 août 2006 à 18:58
ce que veux dire darunia c'est place une MsgBox entre chaque ligne de code pour voir ou il va.
Par exemple en placant une MsgBox après le If. Si la MsgBox s'affiche c'est que le prog est bien entré dans le If. Et ainsi de suite pour voir jusqu'où va le prog.
Tu peux également faire :
MsgBox "PriverNickOpen = " & PriverNickOpen
Pour voir les valeurs prises par tes variables
themik
Messages postés40Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention10 novembre 2006 8 août 2006 à 20:03
Se boute de programmation proviens de mon timer principal de mon chat. qui s'éxécute a chaque centième de seconde:
-----------
If OpenPVOff = False Then
DoEvents
'Empêcher s'il n'est pas addresser à moi.
If Trim(Enregistrement.strNewNick) Nick And Trim(Mid(Enregistrement.StrMessage, 1, 16)) <> "***** Quit *****" And UCase(Trim(Enregistrement.strTime)) <> "FINDIPREP" And UCase(Trim(Enregistrement.StrMessage)) "OPENPV" Then
PriverNickOpen = Trim(Enregistrement.strNick)
'Demande s'il accepte ou pas le Privé
Reponse = "Oui"
If Reponse = "Oui" Then
VbYes2 = "Oui"
------------------
Si je met mon débugueur sur le If, il s'arrête à chaque fois maios je fait F5 donc il recontinue et reviends toujours vue que c'est un timer. Mais la commande que le If est suposer faire se fait. Alors j'en conclus que c'est pas ma commande qui est mal programmer mais plutot que le programme fait sa boucle trop vite. Quelqu'un à un idée pour le faire relentir ou quelque chose la... Fait quatre jours je suit la dessus
themik
Messages postés40Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention10 novembre 2006 9 août 2006 à 00:15
J'aimerais vraiment pourvoir résoudre se problème car j'ai plus de 100 heures de programmations dans ce programme et j'aimerais pouvoir continuer.. Alors que me conseil tu de faire pour que mon code s'éxécute correctement ?
themik
Messages postés40Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention10 novembre 2006 9 août 2006 à 09:01
P.S:
Il vient de me faire une second problème du même type. Voici le code:
If Client = True Then
Winsock1.Connect Trim(TxtServeur.Text), Trim(TxtPort.Text)
DoEvents
If Winsock1.State <> sckConnected Then
MsgBox "L'ordinateur hôte que vous tentez de rejoindre est indisponible ou n'est pas valide."
Winsock1.Close
Exit Sub
End If
Exit Sub
End If
En gros ce bout de code fait que si Client est cocher donc True. Il essais de se connecter au serveur et port. Doevents qui est suposer de lui laisser le temps de se connecté à l'ordinateur et ensuite indiquer s'il se connect ou pas. Encore le même type de problème, avec le debug, il fonctionne bien il se connect, sans sa il m'indique une erreur... la j'y comprend rien qu'es-ce qui fou le doevents, une parrure