Faire une boucle afin d'attendre qu'un fichier txt soit accessible ..

nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 - 2 juil. 2005 à 13:13
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 2 juil. 2005 à 20:49
Bonjour, dans ce nouveau jour de programmation intense :)) !!

Je fais un petit soft qui va régulièrement chercher des informations dans un fichier .txt sur un PC serveur de fichiers.

Or, le pb, c'est que le soft est lancé par plusieur bécanes qui accèdent au meme fichier txt.

Et bien sur, il arrive un moment où, lorsque je fait un

open "[file://serveur/fichier.txt \\serveur\fichier.txt]" for input as #1
(avec le close #1 qui va bien, mais un peu plus bas dans le code)

il renvoit un msg d'erreur disant que le fichier est dejà ouvert !!

Exise-t'il un moyen de faire une boucle attendant que le fichier soit bel et bien fermé !!

Merci encore ..

5 réponses

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
2 juil. 2005 à 16:48
T'a qu'a traiter l'erreur et faire une boucle jusqu'a ce qu'elle ne soit plus là !!!



C'est une question intéressante ça et qui doit forcément avoir une réponse un peu plus propre que la gestion de l'erreur...


Enjoy


(Si une réponse vous convient, cliquez sur son bouton "Accepter ...")
0
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
2 juil. 2005 à 16:49
Salut
En mode d'accès séquentiel, il n'est pas possible d'ouvrir un fichier déjà ouvert.
Pa contre, au sein d'un même programme, c'est possible en mode Binary, mais les accès d'entrée/sortie sont un peu différentes; regarde l'aide de la fonction Open
Pour gérer le blocage d'accès du fichier par d'autre processus (comme c'est ton cas), regarde aussi l'option 'Lock' de la fonction Open : Il suffit d'ajouter 'Shared' dans le Open pour autoriser un accès multiple au fichier.

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)
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
2 juil. 2005 à 17:14
Merci pour l'info Jack... très utile ça !!!


Enjoy


(Si une réponse vous convient, cliquez sur son bouton "Accepter ...")
0
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 1
2 juil. 2005 à 18:21
Je vais matter au niveau de la foncton Open, mais sinon, comment je traite les erreurs par une boucle ??

PS : mon code qui déconne

If Dir(textline & textline3) = textline3 Then Close #1: GoTo 200

merci encore de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
2 juil. 2005 à 20:49
Oulà, c'est une autre histoire ça !!!



Déjà, il faut savoir sous quoi tu codes !!!



En VB6, pour gérer les erreurs il faut initialiser un gestionnaire d'erreur... c'est à dire faire un truc du style :



'A écrire dans la même procédure/fonction



'Active le gestionnaire d'erreur

On Error Goto label 'Ici "label" peut être remplacé par ce que tu veux...



...



'Désactive le gestionnaire d'erreur

On Error Goto 0 '"0"(zéro et pas "eau") c'est pour annuler le gestionnaire... c'est pas le label nommé "0" !!!



Exit Sub 'Ou "Exit Function", c'est selon...

label: 'Label... tout texte valide... remplace les numéros de lignes mais attention à ne pas oublier les deux points !!!

'Traitement des erreurs... Il faut utiliser les propriétés de
l'objet "Err"... Consulte la MSDN (l'aide du VB) pour plus d'infos...

If Err.Number Then...

End Sub
'Ou "End Function", c'est selon également...




Mais y'a aussi "On Error Resume Next" qui saute le truc qui a engendré
l'erreur et poursuit le cours du programme (ce qui peut avoir des
effets inattendus!).



Le mieux est encore de te référer à l'aide du VB (la MSDN donc) pour "On Error ..." et "Err"...


Enjoy


(Si une réponse vous convient, cliquez sur son bouton "Accepter ...")
0
Rejoignez-nous