cs_Stephane
Messages postés550Date d'inscriptionvendredi 5 janvier 2001StatutMembreDernière intervention23 septembre 2006
-
5 mai 2005 à 13:23
cs_MasterHack
Messages postés586Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention13 février 2008
-
5 mai 2005 à 18:40
Salut a tous
Voila je fait une toute petite appli (sans fenetre) qui récupere les
infos d'un serveur CS, et les enregistre dans un fichier. Mais quand
j'execute END à la fin du programme, Il met 1 à 2 seconde avant de se
fermer (alors qu'habituellement, c'est la méthode la plus rapide, et
immédiate), et ensuite, VB se ferme tout seul au bout de 2 sec. J'en
conclu, qu'il ne s'est pas passé une fin de programme "normale" et
qu'il y a un probleme.
D'apres les tests que j'ai pu faire, ca vient du Winsock, mais je ne voit pas ce qui ne va pas.
Pour ce probleme particulier, j'ai mi mon projet ici :
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 mai 2005 à 15:39
Salut
- Par sécurité, ajoute "Option Explicit" dans chaque page de code : ça t'oblige à dimensionner chaque variable, mais ça permet surtout de ne pas avoir de surprise.
- Dans ta ligne "Loop While Map = "" And GetTickCount - T < TimeOut", je te conseille d'ajouter des parenthèses, des fois, ça aide
Loop While (Map = "") And ((GetTickCount - T) < TimeOut)
- Dans DataArrival, ça n'est pas clair :
Tu positionnes un I a une valeur, puis tu commences à I+1. Bon.
Mais après, tu fais incrémenter ton I dans une fonction (élément passé en ByRef) : pas très facile à suivre ni à déboguer
Puisque tes chaines sont séparées par des Chr(0), il te suffit d'utiliser la fonction Split pour récupérer chaque élément :
Dim Tableau As String
Tableau = Split(status, Chr(0))
et tu auras le premier élément net_protocol dans Tableau(0), HostName dans Tableau(1) ...
Quand même plus simple !
- Pourquoi le 'Unload CSStats' ? CSStats n'est pas un objet ouvert, tu as utilisé Inf ! Bizarre
- Par sécurité, je mettrais un Inf.WS.Close avant les Unload
- Si tu cherches un peu, il existe un module qui regroupe toutes les fonctionnalités du Winsock en utilisant la DLL au lieu de l'OCX, ce qui t'éviterait d'utiliser une forme juste pour placer ton Winsock.
Mais tout ça n'explique pas ton délai de fermeture. Il faut voir si tu ne reste pas coincé dans une boucle d'attente ou autre. Il faut deboguer en exécutant ton programme ligne par ligne avec F8 (au lieu de F5)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)