RAgument ou appel de procédure incorrect

RMOINAS Messages postés 98 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 16 septembre 2006 - 21 nov. 2004 à 15:20
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 21 nov. 2004 à 20:56
bonjour

Voilà j'ai fait un logiciel de download qui avait l'air de marcher jusqu'a se que je télécharge une adresse ifrance. Lors du chargement sa me mets argument ou appel de procedure incorrect (erreur 5).

Et sa m'arrete a cette ligne:

Posi = InStr(DATA_R, vbCrLf & vbCrLf)
txtTete.Text = Left(DATA_R, Posi - 1)

J'ai remarqué une chose avec les autres adresse posi est > 1 ors quand je mets une adresse ifrance posi est = 0 donc sa me fait une erreur car 0 - 1 n'a pas l'air d'être gérée (valeur négative).
Si vous pouviez me dire comment sa se fait que avec ifrance j'ai droit a posi 0 alors qu'avec les autres s'est posi 352 par exemple???

Sinon comment pourrai-je faire en sorte que le log accepte les -1 (valeur négatives ) ??

Merci d'avance

++

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
21 nov. 2004 à 15:28
Salut RMOINAS
Bah c'est simple : Si Posi te renvoie 0, c'est que la chaine que tu cherche n'existe pas dnas DATA_R !
Donc, ensuite, tu ne peux pas utiliser posi, il suffit de faire un test :
If Posi > 0 Then txtTete.Text = ...

Vala
Jack
NB : Je ne répondrai pas aux messages privés
0
RMOINAS Messages postés 98 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 16 septembre 2006
21 nov. 2004 à 16:00
S'est se que j'ai fait mais ensuite je dois faire sa pour tout les morceau de code ou il y a :InStr(DATA_R, vbCrLf & vbCrLf) et se qui fait que sa ne dl plus si s'est une adesse ifrance. (pas très util un log de download qui ne telecharge pas non ?)

voilà le code de la*'arrivé des donnée en entier

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

Dim UcaseData As String
Dim DATA_R As String
ComptTimeOut = 0 ' Si des données arrive le cpt de timeout raz
Winsock.GetData DATA_R, vbString ' On récupère les données!!!
' La on transforme tout en majuscule!! Oui des surprise avec certain serveur qui
' font n'importe Quoi donc la partie suivante est blindée!!
UcaseData = UCase(DATA_R)
If Valid_Tete = False Then ' Teste si entéte déjà arrivée!!
If InStr(UcaseData, "CONTENT-TYPE") Then
' ben la on considère que c'est bien une entète
Dim Posi As Integer
Dim String_Temp As String
Byte_A_Recevoir = 0
Posi = InStr(DATA_R, vbCrLf & vbCrLf) ' Ca c'est Fin de l'entéte et début Data
If Posi > 0 Then
txtTete.Text = Left(DATA_R, Posi - 1) 'Récupère entéte dans texte box
End If
DATA_R = Mid(DATA_R, Posi + 4) 'Récupère le début des données

' Vérif du type de données Si TXT , HTML ou autre
Posi = InStr(UcaseData, "CONTENT-TYPE")
Posi = InStr(Posi, UcaseData, ":")
String_Temp = Trim(Mid(UcaseData, Posi + 1, InStr(Posi, UcaseData, vbCrLf) - PosDebut - 1))
If (InStr(String_Temp, "TEXT") <> 0) Or (InStr(String_Temp, "HTML") <> 0) Then
' Ici je l'ai mis l'air de rien ça peut servir ...
End If
' Lecture de l'information de taille du fichier
If InStr(UcaseData, "CONTENT-LENGTH") <> 0 Then
Posi = InStr(UcaseData, "CONTENT-LENGTH")
Posi = InStr(Posi, UcaseData, ":")
Byte_A_Recevoir = CDbl(Trim(Mid(UcaseData, Posi + 1, InStr(Posi, UcaseData, vbCrLf) - Posi - 1)))
Else
' A vous de voir.... dans certain cas ben on vous dit pas combien il
' Ici on gére pas on ferme !!!
Ferme_Connect
Exit Sub
End If
' Teste si c'est un résume qui à été fait
If Action_resume = False Then
' La c'est mis à 1 pour la sauvegarde dans un fichier
' à acces binaire avec fonction PUT cf plus bas
Byte_Deja_Recu = 1
Else
' La c'est mis à longueur fichier + 1 pour la sauvegarde dans le fichier
' à acces binaire avec fonction PUT cf plus bas
Byte_Deja_Recu = FileLength + 1
Byte_A_Recevoir = Byte_A_Recevoir + FileLength
End If
lblTaille.Caption = File_ByteConversion(Byte_A_Recevoir) ' Conversion Ko Mo...
Valid_Tete = True 'Ok flag entête correcte reçue
TimerDebutTransfer = Timer ' Sauve le timer actuel
Byte_Vitesse_Transfer = 0 ' Init du Nbbyte tranféré
CmdPause.Enabled = True
If Len(DATA_R) > 0 Then GoTo Force_Sauvegarde ' ben en fait si il y avait des données avec on les sauves!!!
Else
' Ben là il arrive des données alors que l'entète n'est pas arrivée...
' Donc pour la démo on va fermer la connexion a vous de voir ...
Ferme_Connect
Exit Sub
End If
Else
Force_Sauvegarde:
TextData.Text = DATA_R
NumFile = FreeFile
Open Nom_Fichier For Binary Access Write As #NumFile
Put #NumFile, Byte_Deja_Recu, DATA_R ' on sauve les données
Byte_Deja_Recu = Seek(NumFile) ' on récup taille fichier
Close #NumFile
' ca c'est pour calcul vitesse on compte combien de donnée sont arrivées
Byte_Vitesse_Transfer = Byte_Vitesse_Transfer + Len(DATA_R)
'ListView1.ListItems.Remove (1)


End If


End Sub

Voilà donc en lisant correctemnt on voit que en faisant se que tu m'a dit de faire sa ne marcheras pas. Merci quand même

Si quelqu'un a des autres idée merci

++
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 nov. 2004 à 20:56
s'il y a pas "vbCrLf & vbCrLf" à la fin de l'entête c'est peut être parce qu'il y a eu une erreur.
est-ce qu'il y a "200 OK" dans l'entête, sinon c'est une erreur.

Daniel
0
Rejoignez-nous