FICHIERS

Résolu
hhhp2004 Messages postés 173 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 13 octobre 2007 - 25 déc. 2005 à 18:23
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 26 déc. 2005 à 20:18
hhhp2004

salut,

jai 1 fonction et un sub servant a lire et ecrirer dans un fichier

Private Function lireFichier(chemin As String) As String
Dim numeroFichier As Long


numeroFichier = FreeFile
Open chemin For Input As #numeroFichier
lireFichier = Input(LOF(numeroFichier), #numeroFichier)
Close numeroFichier


End Function


Private Sub ecrireFichier(chemin As String, quoi As String)
Dim numeroFichier As Long


numeroFichier = FreeFile
Open chemin For Output As #numeroFichier
Print #numeroFichier, quoi
Close numeroFichier


End Sub

le probleme cest que quand jecris dans un fichier avec ecrireFichier, il y a toujours un vbcrlf qui est ajoute a la fin, comment resoudre?

merci

3 réponses

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
25 déc. 2005 à 19:01
Salut
En effet, la commande Print ajoute un retour chariot à la fin de chaque ligne écrite.
L'ajout d'un vbCrLf permet de faciliter la relecture ligne par ligne avec "Line Input".
Si tu n'en veux pas, il te suffit d'ouvrir ton fichier en Binary (au lieu de Output) et d'utiliser Put (au lieu de Print)
Exemple :
Open chemin For Binary Access Write As numeroFichier
Put #numeroFichier, , quoi

Dans ta lecture, plutôt que Input, utilise Get :
Open chemin For Binary Access Read As numeroFichier
lireFichier = Space(LOF(numeroFichier))
Get #numeroFichier, , lireFichier

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)
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 déc. 2005 à 19:17
attention ouvrir en Binary n'efface pas le fichier précédent,

si nouveau fichier est plus petit que le précédent, ça va poser problème.







sinon il suffit de mettre un point virgule derrière le Print:

Open chemin For Output As #numeroFichier

Print #numeroFichier, quoi;

Close numeroFichier



Daniel
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
26 déc. 2005 à 20:18
La solution de gobillot est de loin la meilleur pour ton problème. Et note que ça fonctionne également lors d'un print classique [vers l'écran (un contrôle gribouillable style une Form ou une PictureBox)].

Mais prends garde cependant car tes données seront collées. Moi je te conseillerais un truc du style :

Print #numFile, quoi; " ";

Enfin, c'est à toi de voir comment tu veux procéder!!!

Cependant, du coté de la lecture, la méthode de Jack me semble plus "propre". D'ailleurs, je pense que dans ton cas (puisque visiblement tu comptes mettre les données les unes à la suite des autres...) la technique Binary est préférable...

Mais bon, c'est à toi de voir...

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Rejoignez-nous