OVH Cloud OVH Cloud

Probleme de reception de la taille avec getchunk

21 réponses
Avatar
john.ambou
Bonjour,

J'essaye d'ajouter une barre de progression =E0 un transfert ftp par
inet mais la propri"t=E9 getchunk me retourne rien.

Savez vous d'ou provient ce probleme ?

Inet1.Execute , "size /" & fic_source 'demande la taille du fichier a
telecharger
Do Until Inet1.StillExecuting =3D False 'boucle pendant le traitement de
inet
DoEvents
Loop

taille =3D Inet1.GetChunk(1024) 'recuperation de la taille dans taille


En sortie, j'ai taille=3D""=20
=20
Merci=20
=20
Johnson

10 réponses

1 2 3
Avatar
Patrice Henrio
Ne serait-ce pas tout simplement un problème de déclaration de variable et
de type. Pour moi taille devrait être un long et il semble que le retour
soit une string. En typant taille, on aurait au moins une erreur de type.
Sinon lors de l'exécution pas à pas il est possible de mettre un espion sur
une variable et de voir éventuellement un champ ou une propriété..

a écrit dans le message de news:

Bonjour,

J'essaye d'ajouter une barre de progression à un transfert ftp par
inet mais la propri"té getchunk me retourne rien.

Savez vous d'ou provient ce probleme ?

Inet1.Execute , "size /" & fic_source 'demande la taille du fichier a
telecharger
Do Until Inet1.StillExecuting = False 'boucle pendant le traitement de
inet
DoEvents
Loop

taille = Inet1.GetChunk(1024) 'recuperation de la taille dans taille


En sortie, j'ai taille=""

Merci

Johnson
Avatar
john.ambou
Suite à votre réponse, j'ai déclaré une string "essai" je l'ai
ensuite inseré dans mon code comme ceci :

dim taille as long
dim essai as string

essai = inet1.getchunk(1024)
taille = CLng(essai)

Mais ceci me donne toujours la meme erreur, essai = "" et ceci bloque
ensuite la prochaine ligne.

Merci
Johnson
Avatar
Vincent Guichard
a écrit :
Suite à votre réponse, j'ai déclaré une string "essai" je l'ai
ensuite inseré dans mon code comme ceci :

dim taille as long
dim essai as string

essai = inet1.getchunk(1024)
taille = CLng(essai)

Mais ceci me donne toujours la meme erreur, essai = "" et ceci bloque
ensuite la prochaine ligne.

Merci
Johnson




Bonjour,

Si le transfert est en cours, (ce qui semble être le cas), il est
possible que le serveur ftp "cache" les données tant que le transfert
n'est pas fini. Est ce que le le fichier apparait lors d'une commande LIST?

Vincent Guichard
Avatar
Patrice Henrio
En fait votre essai doit nécessairement donner la même chose de cette façon
en effet dans votre cas vous récupérez toujours le résultat dans une string
(ce qui est peut-être normal) donc que le retour soit dans taille (en tant
que string) ou essai (en tant que string) ne change rien à l'affaire. Il
s'agit de la représentation en mémoire des données.

Par exemple si une chaîne se termine par le caractère H00 (caractère null)
et que les long sont codés de la façon suivante MotBas-MotHaut
Chaque mot (word sur deux octets, le long est sur 4 octets) étant codé
ByteBas-ByteHaut une valeur de 1024 sera codé en mémoire
00 10 04 00 00 00 00 00
Lu sous forme de chaîne : ""
On remarque d'ailleurs que même si le codage est dans l'autre sens (poids
fort avant le poids faible) la lecture sous forme de chaîne restera ""


Je pensais plutôt à écrire plutôt directement
taille=inet1.getchunk(1024)
car je ne vois pas pourquoi cela devrait donner une string.

Si Inet.getChunk(1024) renvoie un variant alors la réception dans une string
peut transformer l'écriture d'un nombre en "".

Maintenant je ne connais pas vraiment inet donc il faudrait que je teste
moi-même.


a écrit dans le message de news:


Suite à votre réponse, j'ai déclaré une string "essai" je l'ai
ensuite inseré dans mon code comme ceci :

dim taille as long
dim essai as string

essai = inet1.getchunk(1024)
taille = CLng(essai)

Mais ceci me donne toujours la meme erreur, essai = "" et ceci bloque
ensuite la prochaine ligne.

Merci
Johnson
Avatar
Jean-marc
a écrit dans le message de news:

Suite à votre réponse, j'ai déclaré une string "essai" je l'ai
ensuite inseré dans mon code comme ceci :



dim taille as long
dim essai as string



essai = inet1.getchunk(1024)
taille = CLng(essai)



Mais ceci me donne toujours la meme erreur, essai = "" et ceci bloque
ensuite la prochaine ligne.




Hello,

la première chose à faire est je pense de lire la documentation
sur le sujet (RTFM disent les anglophones: "Read The Fucking Manual!").

Si MSDN n'est pas installé sur ta machine, voici la version
online:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconusinginternettransfercontrol.asp


Il se trouve que la doc est bien faite et donne même un exemple:
Extrait de l'exemple:
Private Sub Inet1_StateChanged(ByVal State As Integer)
' Retrieve server response using the GetChunk
' method when State = 12. This example assumes the
' data is text.

Select Case State
' ... Other cases not shown.

Case icResponseReceived ' 12
Dim vtData As Variant ' Data variable.
Dim strData As String: strData = ""
Dim bDone As Boolean: bDone = False

' Get first chunk.
vtData = Inet1.GetChunk(1024, icString)
DoEvents
Do While Not bDone
strData = strData & vtData
DoEvents
' Get next chunk.
vtData = Inet1.GetChunk(1024, icString)
If Len(vtData) = 0 Then
bDone = True
End If
Loop

txtData.Text = strData
End Select

End Sub

Bonne suite :-)

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Vincent Guichard
Patrice Henrio a écrit :
Je pensais plutôt à écrire plutôt directement
taille=inet1.getchunk(1024)
car je ne vois pas pourquoi cela devrait donner une string.



Ca doit donner une chaine parce que le protocole FTP est un protocole
texte, tout comme la plupart des protocoles datant des début de
l'internet (à l'époque, pouvoir taper les commandes à la main et lire
les réponses dans un terminal était essentiel).

Donc un serveur ftp va répondre à une commande SIZE en renvoyant une
chaine contenant la taille du fichier.

Vincent Guichard
Avatar
Patrice Henrio
OK
Au temps pour moi.
Mais cela n'explique pas pourquoi la chaîne est vide, à moins que son format
soit différent de celui de VB (caractère null en fin de chaîne ...)

"Vincent Guichard" a écrit dans le message de
news: 451cf203$0$27377$
Patrice Henrio a écrit :
Je pensais plutôt à écrire plutôt directement
taille=inet1.getchunk(1024)
car je ne vois pas pourquoi cela devrait donner une string.



Ca doit donner une chaine parce que le protocole FTP est un protocole
texte, tout comme la plupart des protocoles datant des début de l'internet
(à l'époque, pouvoir taper les commandes à la main et lire les réponses
dans un terminal était essentiel).

Donc un serveur ftp va répondre à une commande SIZE en renvoyant une
chaine contenant la taille du fichier.

Vincent Guichard


Avatar
Vincent Guichard
Patrice Henrio a écrit :
OK
Au temps pour moi.
Mais cela n'explique pas pourquoi la chaîne est vide, à moins que son format
soit différent de celui de VB (caractère null en fin de chaîne ...)



Sauf si l'hypothèse que j'avance dans mon message de mercredi se révèle
exacte. Auquel cas la chaine est vide simplement par ce que le fichier
n'est pas encore accessible.

Parce que la commande SIZE en elle-même fonctionne parfaitement, pour ce
que je l'ai testé.

Enfin, tant qu'on aura pas de retour de l'OP...

Vincent Guichard
Avatar
Patrice Henrio
effectivement

Je me rappelle avoir eu un problème avec un webbrowser car je testais le
contenu alors qu'il n'était pas encore totalement chargé.

"Vincent Guichard" a écrit dans le message de
news: 451d2e4d$0$5086$
Patrice Henrio a écrit :
OK
Au temps pour moi.
Mais cela n'explique pas pourquoi la chaîne est vide, à moins que son
format soit différent de celui de VB (caractère null en fin de chaîne
...)



Sauf si l'hypothèse que j'avance dans mon message de mercredi se révèle
exacte. Auquel cas la chaine est vide simplement par ce que le fichier
n'est pas encore accessible.

Parce que la commande SIZE en elle-même fonctionne parfaitement, pour ce
que je l'ai testé.

Enfin, tant qu'on aura pas de retour de l'OP...

Vincent Guichard


Avatar
john.ambou
Merci encore pour toutes ces réponses je vais enqueter dessus !!
1 2 3