OVH Cloud OVH Cloud

URGENT - Problème simple - Merci

2 réponses
Avatar
Daryl
Bonjour,

Ce programme génère un fichier texte avec 200 lignes =255; mais une ligne
blanche se trouve à la fin de mon fichier lorsque je l'ouvre avec un
logiciel ou un éditeur de texte. Je ne veux pas de cette ligne blanche.
Est-ce un problème de VB ou un problème de mode d'ouverture du fichier texte
?

Open "C:\1essai.txt" For Output As #1
For N = 1 To 200
Print #1, "255;"
Next N
Close #1

Merci.

2 réponses

Avatar
Zoury
Salut! :O)

-Vous réouvrez votre fichier, lisez tous son contenue, et lui réécrire
le contenue sans les 2 dérniers caractére:
'Perso, je n'aime pas trop cette methode, je la trouve pas trés propre.



Content de l'entendre. :O)))
Si on est pour reecrire apres l'ecriture, autant l'ecrire correctement du
premier coup..

-Encore une constiste a dabort générer le fichier en mémoire:



La concatenation de chaine en VB est *tres* lente.
Aussi... :

- pourquoi ecrire dans une variable si on peut ecrire directement dans le
fichier?
- pourquoi (comme pour le premier exemple) ecrire incorrectment les donnees
dans la variable si on est pour tronquer les dernier caracteres?

L'allocation, la copie et la desallocation de memoire comptent
parmis les actions qui demandent le plus temps et de ressources, autant les
reduire au minimum.

Open "C:1essai.txt" For Output As #1



Les exemples fournit dans l'aide emploi des numeros de fichier "code en
dur"... Je ne le conseil pas. La fonction FreeFile() nous est offerte afin
de nous renvoyer le prochain numero de fichier disponible, autant l'utiliser
afin de nous eviter des maux de tetes plus tard. De plus ca rend le code
plus portable.

Personnelement j'opterais pour une ouverture en mode binaire, comme ceci :

<non teste>
'***
' Module1
Option Explicit

Private Sub Main()

Dim i As Byte
Dim hFile As Integer

hFile = FreeFile
Open "c:file.txt" For Binary As #hFile

For i = 1 to 200
Put #hFile, , "255;"
If (i < 200) Then Put #hFile, , vbNewLine
Next i

Close #hFile

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Daryl
Merci beaucoup, l'ouverture en mode binaire semble être le bon plan selon
mes tests.


"Zoury" a écrit dans le message de news:

Salut! :O)

> -Vous réouvrez votre fichier, lisez tous son contenue, et lui


réécrire
> le contenue sans les 2 dérniers caractére:
> 'Perso, je n'aime pas trop cette methode, je la trouve pas trés propre.

Content de l'entendre. :O)))
Si on est pour reecrire apres l'ecriture, autant l'ecrire correctement du
premier coup..

> -Encore une constiste a dabort générer le fichier en mémoire:

La concatenation de chaine en VB est *tres* lente.
Aussi... :

- pourquoi ecrire dans une variable si on peut ecrire directement dans le
fichier?
- pourquoi (comme pour le premier exemple) ecrire incorrectment les


donnees
dans la variable si on est pour tronquer les dernier caracteres?

L'allocation, la copie et la desallocation de memoire comptent
parmis les actions qui demandent le plus temps et de ressources, autant


les
reduire au minimum.

> Open "C:1essai.txt" For Output As #1

Les exemples fournit dans l'aide emploi des numeros de fichier "code


en
dur"... Je ne le conseil pas. La fonction FreeFile() nous est offerte afin
de nous renvoyer le prochain numero de fichier disponible, autant


l'utiliser
afin de nous eviter des maux de tetes plus tard. De plus ca rend le code
plus portable.

Personnelement j'opterais pour une ouverture en mode binaire, comme ceci :

<non teste>
'***
' Module1
Option Explicit

Private Sub Main()

Dim i As Byte
Dim hFile As Integer

hFile = FreeFile
Open "c:file.txt" For Binary As #hFile

For i = 1 to 200
Put #hFile, , "255;"
If (i < 200) Then Put #hFile, , vbNewLine
Next i

Close #hFile

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/