Bug, dépassement des capacités... MAIS POURQUOI?!?!?
faiseurdesonges
Messages postés10Date d'inscriptionjeudi 27 mars 2003StatutMembreDernière intervention10 mars 2004
-
17 août 2003 à 15:25
faiseurdesonges
Messages postés10Date d'inscriptionjeudi 27 mars 2003StatutMembreDernière intervention10 mars 2004
-
18 août 2003 à 07:51
voila c juste un robo archiveur sur irc tout semble bien marcher ... lorsqu'il reçoit un 'ping', il renvoit un 'pong', jusque là tout semble normal. Ce pong il le note aussi dans sa fenêtre d'état (text1). Le hic est que au bout de x minutes où il est resté connecté il pète un cable et plante suite à un dit 'dépassement des capacités'... la ligne de code mise en cause est celle ci:
mais je ne comprends pas où il peut y avoir eu un dépassement des capacités.... (text1 étant remis à zeros si il devient trop imposant..)
Vous n'avez pas une idée?
Sinon voici le modul en entier:
Public Sub IRCSend(chaine As String)
'on envoie une chaine au serveur mais on l'affiche aussi !
Winsock1.SendData chaine & vbCrLf
If Len(Text1.Text) > 80000 Then Text1.Text = ""
Text1.Text = Text1.Text & vbCrLf & "--------------" & vbCrLf & ">" & chaine
End Sub
mici d'avance ^^
A voir également:
Bug, dépassement des capacités... MAIS POURQUOI?!?!?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 17 août 2003 à 16:03
8-) Neodante 8-)
En effet une chaine de caractères peut contenir plus de 2 milliards de caractères mais est-tu sure que ce n'est pas le SendData qui fait la grouille ???
@+
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 17 août 2003 à 16:47
8-) Neodante 8-)
D'après la documentation MSDN la fonction Len renvoit un Long mais en fait si tu fais une boucle de 80000 et que tu demandes la taille avec Len, la valeur ne dépasse pas 35565 !!!
Si ça peut t'aider
faiseurdesonges
Messages postés10Date d'inscriptionjeudi 27 mars 2003StatutMembreDernière intervention10 mars 2004 17 août 2003 à 19:14
mmh oki donc le nettoyage du text1 ne se fera jamais....
mais je comprends quand même pas car j'ai pas dépassé le millard avant que ça bug :P
quand à l ligne qui bug c celle que vb6 me pointe lorsque ça plante dans l'éxecution.... (erreur numéros -9 je crois.... mais vais vérrifier (bref laisser tourner le prog une heure -_- ) )
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 18 août 2003 à 01:20
Probablement car tu reçois bcp trop d'info en provenance du socket, et comme tu utilise l'objet text1 pour cumuler l'ancien résultat, y dois y avoir un problème de pile...
enfin bref, essaye plutôt ce code :
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim chaine As String
Dim TempS As String
Winsock1.GetData chaine
If Len(Text1.Text) > 50000 Then Text1.Text = ""
TempS = Text1.Text & vbCrLf & "--------------" & vbCrLf & Mid(chaine, 1, Len(chaine) - 2)
Text1.Text = TempS
CheckLine chaine
End Sub
c'est bizarre mais j'ai l'impression que ça servira a rien... Si c'est le cas, vire la ligne qui teste si len(text1)>50000 ainsi que text1.text = temps en la remplaçant par
Text1.Text = Right$(Temps, 50000)
faiseurdesonges
Messages postés10Date d'inscriptionjeudi 27 mars 2003StatutMembreDernière intervention10 mars 2004 18 août 2003 à 07:51
ça n'a pas l'air de changer grand choses.... mais j'ai abaissé la limite à 35565, comme on me l'a fait remarqué plus haut et il n'a pas planté de la nuit c'était peut être ça... :-)
je viens de le démarrer avec ''Text1.Text = Right$(Temps, 50000)'' ça risque fort de marcher aussi :-)
(bête limite à la valeur de 'len')