FSO: comment tester la fermeture d'un TextStream

Résolu
Messages postés
16
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
1 mai 2014
-
Messages postés
16
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
1 mai 2014
-
Bonjour,

Petite question concernant l'utilisation de la méthode Close() pour l'objet TextStream du FSO : comment connaître l'état du TextStream...?
Je m'explique, voici le genre de code (simplifié) que je veux utiliser :
Dim oLogFile As TextStream, fso as New FileSystemObject
Set oLogFile = fso.OpenTextFile("C:\test.txt", ForReading)
' ... diverses opérations de lecture sur le fichier
Call oLogFile.Close
' ici oLogFile n'est plus utilisable...
' comment tester alors qu'il vient d'être fermé ?
' => un test avec Nothing ne donne rien, ni avec False, ni avec Null, ni avec Empty...!!!
Je suis perdu...

Merci d'avance !

2 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

En théorie, tu es plutôt bien placer pour savoir si ton fichier est fermé ou pas...

Sinon, tu peux éventuellement mettre un booléen à True quand tu ouvre ton fichier et à False quand tu le ferme. De cette manière, tu n'aurais qu'à tester le booléen pour savoir si ton fichier est fermé.

Tu peux aussi traiter ça avec une gestion d'erreur, mais c'est un peu lourd :

On Error Goto Fermé
'Le code suivant génère une erreur si le fichier est fermé.
Call oLogFile.AtEndOfLine

MsgBox 'Fichier ouvert'

Exit Sub 'Ou Function, ça dépend d'ou c'est

Fermé :

MsgBox "Fichier fermé"

@+
<hr size="2" width="100%" />Je suis en deuxième année en école d'ingénieur et passionné de développement logiciel. Je cherche un stage en entreprise sur paris ou Clermont de début avril à fin juillet 2007. Mes langages de prédilection sont
Messages postés
16
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
1 mai 2014

En théorie uniquement... car quand la variable pointant vers le TextStream est passée comme paramètre d'une méthode ou fonction... l'utilisation d'un booléen pour suivre l'état (ouvert ou fermé) du fichier est pour le moins plus complexe et malhabile.

Par contre effectivement, la gestion d'erreur pourrait permettre de gérer ça "correctement" (enfin presque... ;-)
C'est juste qu'il est dommage de ne pas retrouver sur ce genre d'objet un membre du type de "State" comme sur les Recordset de bases de données).