Detecter l'apparition d'un fichier

Signaler
Messages postés
18
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
27 février 2009
-
Messages postés
18
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
27 février 2009
-
Bonjours

Je travaille sur une application qui fait l'envoie d'un fichier de données vert une machine
l'envoie se fait à traver un patch "Patch.exe", le patch renvoi un fichier resultat d'envoi,dedans indiquant  si le transfert et réalisée avec succé ou non.
pour lire le resultat, j'utilise un timer qui pointe chaque 10s vers lechemin du fichier et lit le resultat d'envoi
le probleme et que des fois le timer ouvre le fichier sans rein trouver,car à la fin de l'envoi le patch genere le fichier ensuit il ecrit le resultat

Y a t'il une autre solution pour bien lire le fichier resultat au bon moment.

merci.

8 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
tu cherches en gros a lire le fichier, si les modifications le concernant sont terminées ?
tu peux tester la date de modif de ce fichier (FileDateTime) et attendre une dizaine de secondes après cette date avant d'incorporer le fichier...
Messages postés
18
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
27 février 2009

salut
je ne peut pas preciser le temp d'attente pour lire le fichier,car la reponse et reliée  à la quantitée des données envoyé, plus le fichier est volumineux -> plus  de temp à attendre

j'ai utilisé ces fonction mour mettre la main sur la commande de l'envoie et attendre jusqu'a quelle se termine
mais le probleme,et que des fois si la commande de l'envoie (patch.exe) se plante , l'application de plante aussi

         dim retval as long , pHandle as long , ret as long
         retval = Shell(App.Path & "patch.exe, vbMinimizedFocus)
         pHandle = OpenProcess(SYNCHRONIZE, False, retval)
         ret = WaitForSingleObject(pHandle, INFINITE)
         ret = CloseHandle(pHandle)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ok, c'est toi qui lances Patch.exe

c'est donc au poil...

http://www.vbfrance.com/codes/SHELLANDWAIT-EXECUTER-APPLICATION-ATTENDRE-FIN-RENVOYER-SON-CODE_34867.aspx

ainsi, en testant le code retour, tu sauras si le fichier est exploitable ou si patch a planté ^^
Messages postés
40
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
2 mars 2009

Si tu fait un transfer par Socket
Il a faut arriver à les mettre en route
tu aura un interruption à la fin du transfert
en restant sur ton idée de Timer
tu peux tenter de déplacer ou renommer le fichier que tu veux lire
si apparait une erreur, c'est qu'il est encore ouvert
donc que le transfert n'est pas terminé
je ne peux pas te donner de code, je programme en VB6
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
ben lui aussi, en VB6 ^^
Messages postés
18
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
27 février 2009

Bonjours


excusez moi,ma description précedante manque un peut de détailles.
je fait l'envoie par un fichier .bat "Script.bat", ce fichier contient la commande suivante
"Patch.exe" WR  adressemachine1 adressemachine2 ..."
Comme la taille du fichier de données à envoyer augmente la durée de l'envoi ,le nb des machines
augmentent aussi la durée

Moi je ne m'interesse pas baucoup si le transfert est passée totalement avec succée,mais j'interesse a refaire l'envoie
chque fois qu'il echoue ou depasse une certaine durée
je veut derterminer la durée du processus d'envoi en cour en temp réel,et le comparer a une constante
private const temp=&H300000 (5min),
si le processus se plante et depasse cette durée,je le termine,pour que je puisse refaire l'envoie de nouveau
Comment je peut faire cette démarche?

Merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
le bat ne contient que cette instruction ?

si oui, passes toi de l'utiliser, lance l'exe toi même
Messages postés
18
Date d'inscription
lundi 9 avril 2007
Statut
Membre
Dernière intervention
27 février 2009

Salut
l'operation d'envoie doit etre automatique,car le fichier de donnée est envoyé
par un serveur distant,dans dossier predéfini.
l'application doit verfiier chaque (10s) si le fichier existe ou pas,si oui elle execute l'envoie