VB Plante :o

cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006 - 5 mai 2005 à 13:23
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 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 :



http://virtcs.free.fr/taverne/autre/vb.rar

Si vous pouviez me dire si VB plante aussi, lors de l'execution du prog, et si vous voyez l'erreur... dites moi :p



Merci d'avance pour votre aide



A+



<hr size="2" width="100%">Utilisateurs du forum : Merci de lire http://www.vbfrance.com/forum.v2.aspx?ID=445871

<hr size="2" width="100%">

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
5 mai 2005 à 16:47
Merci pour ta reponse, mais di moi, ca plante, et ca bloque a toi aussi ? ou pas ?



je peu pas utiliser split, parce qu'a un momen il y a une valeur byte
qui peut etre la valeur 0 et a ce momen la le split le pren en compte...


je vais chercher le module dont tu parle

merci

A+



<hr size="2" width="100%">Utilisateurs du forum : Merci de lire http://www.vbfrance.com/forum.v2.aspx?ID=445871

<hr size="2" width="100%">
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
5 mai 2005 à 18:40
nop ça plonte po chez moi

<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
Rejoignez-nous