VB 2008 : récupération de valeurs dans une variable, ouverture fichier...

cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010
- 4 mars 2009 à 10:52
cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010
- 6 mars 2009 à 12:14
Bonjour,
je dois optimiser un programme en VB2008. Pour cela j'enlève tous les éléments fso pour les remplacer par les classes du Framework.

Ce programme était avant écrit en VB6, je l'ai donc migré.

Je voudrais savoir comment faire pour affecter une certaine valeur dans une variable qui doit être affectée avant d'être utilisée. Je m'explique :
En VB6, il était écrit ceci :

'ouverture du fichier en écriture
Set ma_var = fso.OpenTextFile(mon_repertoire, ForWriting)

En VB2008, j'ouvre ce fichier de cette manière pur le moment :
FileOpen(1, mon_repertoire + "", OpenMode.Output)

Et je voudrais l'ouvrir dans la variable ou en tout cas récupérer l'action dans cette variable d'une manière que je ne connais pas ; pour l'instant je pensais à ceci :

ma_var = FileOpen(1, gs_FilesToArchive_TempFile + "", OpenMode.Output)

Mais ça ne fonctionne pas...

Je déclare mes variables de cette façon :

Dim ma_var As Scripting.TextStream
Public mon-repertoire As String

NB : Je dois ouvrir le fichier au même endroit qu'avant, et pas ailleurs (donc il y a les déclarations de variables, ensuite j'ouvre le fichier). Sinon mon fichier est bien créé.

Quelqu'un aurait-il une idée ?

Cordialement,
Ginger

6 réponses

cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010

4 mars 2009 à 12:38
PS : Car après j'ai besoin d'écrire dans le fichier correspondant à la variable ma_var.
En gros, je fais ceci :
---
'Déclaration de ma_var
'...
'Ouverture de fichier
'...
'Ecriture dans le fichier
ma_var.WriteLine(*)

'L'étoile * repésente le nom des dossiers et/ou fichiers récupérés plus haut dans mon code.
---

Or puisque je dois écrire "dans cette variable" je dois lui assigner une valeur auparavant... Comment faire autrement ?

Cordialement,
Ginger
0
cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010

4 mars 2009 à 12:39
(Du coup comme je n'ai pas assigné de valeur à ma_var, le fichier créer ne peut pas se fermer et le programme s'arrête là.)
0
cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010

5 mars 2009 à 14:54
Quel type est-il possible de convertir en TextStream ?

Lorsque j'ouvre mon fichier, cela se passe ainsi :
FileOpen(integer, string, integer)
Or TextStream = FileOpen(integer, string, integer) est impossible...
J'ai pensé déclaré une variable intermédiaire qui pourrait convertir en un certain type ce que renvoie le FileOpen, soit le fichier ouvert, mais je ne sais pas quel type ?? Pour ensuite attribuer cette valeur transitoire à ma variable qui est déclarée en TextStream (qui est un flux).

Auriez-vous une petite idée ???
Ginger
0
cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010

5 mars 2009 à 16:17
Autre problème :

Comment récupérer un fichier d'un dossier ?

Voici mon code :
---
'Déclarations de variables
Dim var_fichier As Files()
Dim nom_objet_dossier As DirectoryInfo
'traitement
var_fichier = nom_objet_dossier.GetFiles
---

Au débogage, InvalidCastException : Impossible d'effectuer un cast d'un objet de type 'System.IO.FileInfo[]' en type 'Scripting.Files[]'

Why ?
0

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

Posez votre question
cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010

6 mars 2009 à 11:55
Bonjour

Je me suis arrangée autrement : je n'utilise plus de variable pour écrire dans le fichier, mais par contre j'en utilise une déclarée en streamReader pour lire dans le fichier.
Voici mon code pour l'écriture :
---
'Déclarations
'AUCUNE VARIABLE N'EST PLUS NECESSAIRE
'Traitements
'Ouverture
FileOpen(1, mon_repertoire+"", OpenMode.Outpout)
'Récupération des repertoires, dossiers, sous-dossiers, (j'ai un pb pour les fichiers)
'...
'Ecriture
WriteLine(objet_sousDoss.Name & "" & objet_sousSousDoss.Name & ""
& objet_sousSousSousDoss.Name & "")
'Fermeture
FileClose()
---

Et pour la lecture :
---
'Déclarations
Dim ma_var_a_lire As StreamReader
'Traitements
'ouverture du fichier
fArchiveTempFile = System.IO.File.OpenText(mon_repertoire)
'Lecture
Do Until ma_var_a_lire.EndOfStream
autre_var = ma_var_a_lire.ReadLine()
Loop
'Fermeture
FileClose()
---

Par contre les chemins spécifiés pour les dossiers... ne sont plus reconnus il y a un pb...

Ginger
0
cs_ginger4957
Messages postés
69
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
3 septembre 2010

6 mars 2009 à 12:14
CORRECTIF :
'Fermeture
ma_var_a_lire.Close()
0