[Novice] Ecrire une ligne en fin d'un fichier texte
15 réponses
Dom
Bonjour à tous,
Je débute sous VB et rencontre un petit "soucis".
Au sein d'un fichier texte, je souhaiterai ecrire une ligne vide à la suite
de la dernière ligne du fichier (un retour charriot en fait).
J'ai tenté de ré écrire le fichier texte en mettant en tampon (buffer) le
fichier initial puis en re écrivant le fichier final en l'alimentant du
contenu du buffer + 1 ligne vierge. Mais ca marche pas !
J'imagine pourtant que ce ne doit pas être très compliqué. Quelqu'un
pourrait il me donner un exemple ?
1000 mercis à vous.
voici un exemple (non testé) '*** ' Module1 Option Explicit
Private Sub Main()
Dim hFile As Long Dim sFile As String
hFile = FreeFile ' obtiens un handle libre Open "c:mon_fichier.txt" For Binary As #hFile Seek #hFile, LOF(hFile) ' amène le pointeur à la fin du fichier Put #hFile, , vbNewLine & "blablablabla" ' on rajoute notre texte Close #hFile
End Sub '***
tu peux aussi utiliser ma classe CFile qui est conçu pour te faciliter la vie.. : '*** ' Module1 Option Explicit
End Sub '*** elle est disponible ici : http://groups.google.com/groups?selm=uKyYolctDHA.2464%40TK2MSFTNGP12.phx.gbl
si tu utilise le FileSystemObject, lit ceci : http://faq.vb.free.fr/index.php?question6 et utilise une des techniques mentionnées ci-haut ;O)
-- Cordialement Yanick Lefebvre MVP pour Visual Basic
Salut Dom! :O)
voici un exemple (non testé)
'***
' Module1
Option Explicit
Private Sub Main()
Dim hFile As Long
Dim sFile As String
hFile = FreeFile ' obtiens un handle libre
Open "c:mon_fichier.txt" For Binary As #hFile
Seek #hFile, LOF(hFile) ' amène le pointeur à la fin du fichier
Put #hFile, , vbNewLine & "blablablabla" ' on rajoute notre texte
Close #hFile
End Sub
'***
tu peux aussi utiliser ma classe CFile qui est conçu pour te faciliter la
vie.. :
'***
' Module1
Option Explicit
voici un exemple (non testé) '*** ' Module1 Option Explicit
Private Sub Main()
Dim hFile As Long Dim sFile As String
hFile = FreeFile ' obtiens un handle libre Open "c:mon_fichier.txt" For Binary As #hFile Seek #hFile, LOF(hFile) ' amène le pointeur à la fin du fichier Put #hFile, , vbNewLine & "blablablabla" ' on rajoute notre texte Close #hFile
End Sub '***
tu peux aussi utiliser ma classe CFile qui est conçu pour te faciliter la vie.. : '*** ' Module1 Option Explicit
End Sub '*** elle est disponible ici : http://groups.google.com/groups?selm=uKyYolctDHA.2464%40TK2MSFTNGP12.phx.gbl
si tu utilise le FileSystemObject, lit ceci : http://faq.vb.free.fr/index.php?question6 et utilise une des techniques mentionnées ci-haut ;O)
-- Cordialement Yanick Lefebvre MVP pour Visual Basic
Dom
Re bonsoir,
Après tests et recherche, je pense que mon soucis viens de mon incapacité à mettre ds une variable de type buffer l'ensemble des lignes d'un fichier. Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour ensuite les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un autre fichier texte ? Merci encore
Dom
Re bonsoir,
Après tests et recherche, je pense que mon soucis viens de mon incapacité à
mettre ds une variable de type buffer l'ensemble des lignes d'un fichier.
Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour ensuite
les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un
autre fichier texte ?
Merci encore
Après tests et recherche, je pense que mon soucis viens de mon incapacité à mettre ds une variable de type buffer l'ensemble des lignes d'un fichier. Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour ensuite les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un autre fichier texte ? Merci encore
Dom
scraper
Bonjour Dom (dans news:%) tu nous disais :
Re bonsoir,
Après tests et recherche, je pense que mon soucis viens de mon incapacité à mettre ds une variable de type buffer l'ensemble des lignes d'un fichier. Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour ensuite les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un autre fichier texte ? Merci encore
vois ici, tu as un exemple qui devrait te convenir ??
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Bonjour Dom
(dans news:%23g6NQ6wsEHA.4040@TK2MSFTNGP09.phx.gbl)
tu nous disais :
Re bonsoir,
Après tests et recherche, je pense que mon soucis viens de mon
incapacité à mettre ds une variable de type buffer l'ensemble des
lignes d'un fichier. Comment donc, lire toutes les lignes d'un
fichier jusque sa fin pour ensuite les mettre ds un tampon avant
d'envisager l'écriture de ce tampon ds un autre fichier texte ?
Merci encore
vois ici, tu as un exemple qui devrait te convenir ??
Après tests et recherche, je pense que mon soucis viens de mon incapacité à mettre ds une variable de type buffer l'ensemble des lignes d'un fichier. Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour ensuite les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un autre fichier texte ? Merci encore
vois ici, tu as un exemple qui devrait te convenir ??
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Jean-Marc
"Dom" a écrit dans le message de news:%
Re bonsoir,
Après tests et recherche, je pense que mon soucis viens de mon incapacité
à
mettre ds une variable de type buffer l'ensemble des lignes d'un fichier. Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour
ensuite
les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un autre fichier texte ? Merci encore
Hello,
alors quand on débute, il faut commencer simple.
Pour ouvrir un fichier en LECTURE (non binaire): => Open "fichier.txt" for INPUT as #f Pour ouvrir un fichier en ECRITURE (non binaire): => Open "fichier.txt" for OUTPUT as #f
Note: en OUTPUT, si le fichier existe déjà, il va être détruit. Enfin, Pour ouvrir un fichier en AJOUT (non binaire): => Open "fichier.txt" for APPEND as #f
Ce mode est intéressant pour ouvrir le fichier en écriture, et ajouter des données à la suite du contenu pré existant (c'est le sens de APPEND).
Finalement, pour lire tout un fichier texte, voici une façon simple à comprendre. Surement pas la façon la plus performante, mais tout à fait ok dans 99,9% des cas, et en tout cas didactique, ce qui est le point qui nous intéresse ici.
L'exemple suivant va ouvrir un fichier TEXTE, lire le contenu entier dans un Buffer (ligne par ligne) puis écrire le buffer complet dans un autre fichier, en une fois.
' -- Private Sub LireFichier() Dim f As Integer Dim s As String Dim Buffer As String
f = FreeFile Open "c:essai.txt" For Input As #f While Not EOF(f) Line Input #f, s Buffer = Buffer & s Wend Close #f
f = FreeFile Open "c:essai2.txt" For Output As #f Print #f, Buffer Close #f End Sub
Bien entendu, il faut lire la documentation: - Touche F1 sur n'import quel mot clé - Depuis l'IDE, Help .. Index - Sur le Net, dans MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconprogrammersguide.asp
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
"Dom" <laurentdom@free.frNOSPAM> a écrit dans le message de
news:%23g6NQ6wsEHA.4040@TK2MSFTNGP09.phx.gbl...
Re bonsoir,
Après tests et recherche, je pense que mon soucis viens de mon incapacité
à
mettre ds une variable de type buffer l'ensemble des lignes d'un fichier.
Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour
ensuite
les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un
autre fichier texte ?
Merci encore
Hello,
alors quand on débute, il faut commencer simple.
Pour ouvrir un fichier en LECTURE (non binaire):
=> Open "fichier.txt" for INPUT as #f
Pour ouvrir un fichier en ECRITURE (non binaire):
=> Open "fichier.txt" for OUTPUT as #f
Note: en OUTPUT, si le fichier existe déjà, il va
être détruit.
Enfin,
Pour ouvrir un fichier en AJOUT (non binaire):
=> Open "fichier.txt" for APPEND as #f
Ce mode est intéressant pour ouvrir le fichier
en écriture, et ajouter des données à la suite
du contenu pré existant (c'est le sens de APPEND).
Finalement,
pour lire tout un fichier texte, voici une façon
simple à comprendre. Surement pas la façon la plus
performante, mais tout à fait ok dans 99,9% des cas,
et en tout cas didactique, ce qui est le point qui
nous intéresse ici.
L'exemple suivant va ouvrir un fichier TEXTE,
lire le contenu entier dans un Buffer (ligne par ligne)
puis écrire le buffer complet dans un autre fichier,
en une fois.
' --
Private Sub LireFichier()
Dim f As Integer
Dim s As String
Dim Buffer As String
f = FreeFile
Open "c:essai.txt" For Input As #f
While Not EOF(f)
Line Input #f, s
Buffer = Buffer & s
Wend
Close #f
f = FreeFile
Open "c:essai2.txt" For Output As #f
Print #f, Buffer
Close #f
End Sub
Bien entendu, il faut lire la documentation:
- Touche F1 sur n'import quel mot clé
- Depuis l'IDE, Help .. Index
- Sur le Net, dans MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconprogrammersguide.asp
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Après tests et recherche, je pense que mon soucis viens de mon incapacité
à
mettre ds une variable de type buffer l'ensemble des lignes d'un fichier. Comment donc, lire toutes les lignes d'un fichier jusque sa fin pour
ensuite
les mettre ds un tampon avant d'envisager l'écriture de ce tampon ds un autre fichier texte ? Merci encore
Hello,
alors quand on débute, il faut commencer simple.
Pour ouvrir un fichier en LECTURE (non binaire): => Open "fichier.txt" for INPUT as #f Pour ouvrir un fichier en ECRITURE (non binaire): => Open "fichier.txt" for OUTPUT as #f
Note: en OUTPUT, si le fichier existe déjà, il va être détruit. Enfin, Pour ouvrir un fichier en AJOUT (non binaire): => Open "fichier.txt" for APPEND as #f
Ce mode est intéressant pour ouvrir le fichier en écriture, et ajouter des données à la suite du contenu pré existant (c'est le sens de APPEND).
Finalement, pour lire tout un fichier texte, voici une façon simple à comprendre. Surement pas la façon la plus performante, mais tout à fait ok dans 99,9% des cas, et en tout cas didactique, ce qui est le point qui nous intéresse ici.
L'exemple suivant va ouvrir un fichier TEXTE, lire le contenu entier dans un Buffer (ligne par ligne) puis écrire le buffer complet dans un autre fichier, en une fois.
' -- Private Sub LireFichier() Dim f As Integer Dim s As String Dim Buffer As String
f = FreeFile Open "c:essai.txt" For Input As #f While Not EOF(f) Line Input #f, s Buffer = Buffer & s Wend Close #f
f = FreeFile Open "c:essai2.txt" For Output As #f Print #f, Buffer Close #f End Sub
Bien entendu, il faut lire la documentation: - Touche F1 sur n'import quel mot clé - Depuis l'IDE, Help .. Index - Sur le Net, dans MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconprogrammersguide.asp
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
ng
Salut,
Regarde ces exemples peut être :
Private Sub Form_Load()
'//EXEMPLE 1 : Gestion par ligne
Dim k As Integer, strBuffer As String, tblLines() As String
k = FreeFile Open "c:fichier.txt" For Binary As #k '//Préparation du buffer strBuffer = String$(LOF(k), vbNullChar) '//remplissage à partir du fichier Get #k, , strBuffer Close #k
'//séparation en ligne dans un tableau tblLines = Split(strBuffer, vbCrLf): strBuffer = ""
For k = 0 To UBound(tblLines) '//énumération des lignes MsgBox tblLines(k) Next
'//Si on veut ajouter une ligne : ReDim Preserve tblLines(UBound(tblLines) + 1)
'//Valeur de la nouvelle ligne, on peut laisser "" pour une ligne vide tblLines(UBound(tblLines)) = "Ma nouvelle ligne"
'//Ecriture des modifs ds le fichier :
k = FreeFile Open "c:fichier.txt" For Output As #k Print #k, Join(tblLines, vbCrLf); Close #k
Erase tblLines End Sub
Private Sub Form_Load()
'//EXEMPLE 2 : Ajout direct dans le buffer
Dim k As Integer, strBuffer As String
k = FreeFile Open "c:fichier.txt" For Binary As #k '//Préparation du buffer strBuffer = String$(LOF(k), vbNullChar) '//remplissage à partir du fichier Get #k, , strBuffer Close #k
'//Si on veut ajouter une ligne : strBuffer = strBuffer & vbCrLf & "Ma nouvelle ligne"
'//Ecriture des modifs ds le fichier :
k = FreeFile Open "c:fichier.txt" For Output As #k Print #k, strBuffer; Close #k
strBuffer = "" End Sub
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Dom wrote:
Bonjour à tous,
Je débute sous VB et rencontre un petit "soucis". Au sein d'un fichier texte, je souhaiterai ecrire une ligne vide à la suite de la dernière ligne du fichier (un retour charriot en fait). J'ai tenté de ré écrire le fichier texte en mettant en tampon (buffer) le fichier initial puis en re écrivant le fichier final en l'alimentant du contenu du buffer + 1 ligne vierge. Mais ca marche pas ! J'imagine pourtant que ce ne doit pas être très compliqué. Quelqu'un pourrait il me donner un exemple ? 1000 mercis à vous.
Dom
Salut,
Regarde ces exemples peut être :
Private Sub Form_Load()
'//EXEMPLE 1 : Gestion par ligne
Dim k As Integer, strBuffer As String, tblLines() As String
k = FreeFile
Open "c:fichier.txt" For Binary As #k
'//Préparation du buffer
strBuffer = String$(LOF(k), vbNullChar)
'//remplissage à partir du fichier
Get #k, , strBuffer
Close #k
'//séparation en ligne dans un tableau
tblLines = Split(strBuffer, vbCrLf): strBuffer = ""
For k = 0 To UBound(tblLines)
'//énumération des lignes
MsgBox tblLines(k)
Next
'//Si on veut ajouter une ligne :
ReDim Preserve tblLines(UBound(tblLines) + 1)
'//Valeur de la nouvelle ligne, on peut laisser "" pour une ligne vide
tblLines(UBound(tblLines)) = "Ma nouvelle ligne"
'//Ecriture des modifs ds le fichier :
k = FreeFile
Open "c:fichier.txt" For Output As #k
Print #k, Join(tblLines, vbCrLf);
Close #k
Erase tblLines
End Sub
Private Sub Form_Load()
'//EXEMPLE 2 : Ajout direct dans le buffer
Dim k As Integer, strBuffer As String
k = FreeFile
Open "c:fichier.txt" For Binary As #k
'//Préparation du buffer
strBuffer = String$(LOF(k), vbNullChar)
'//remplissage à partir du fichier
Get #k, , strBuffer
Close #k
'//Si on veut ajouter une ligne :
strBuffer = strBuffer & vbCrLf & "Ma nouvelle ligne"
'//Ecriture des modifs ds le fichier :
k = FreeFile
Open "c:fichier.txt" For Output As #k
Print #k, strBuffer;
Close #k
strBuffer = ""
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Dom wrote:
Bonjour à tous,
Je débute sous VB et rencontre un petit "soucis".
Au sein d'un fichier texte, je souhaiterai ecrire une ligne vide à la
suite de la dernière ligne du fichier (un retour charriot en fait).
J'ai tenté de ré écrire le fichier texte en mettant en tampon
(buffer) le fichier initial puis en re écrivant le fichier final en
l'alimentant du contenu du buffer + 1 ligne vierge. Mais ca marche
pas !
J'imagine pourtant que ce ne doit pas être très compliqué. Quelqu'un
pourrait il me donner un exemple ?
1000 mercis à vous.
Dim k As Integer, strBuffer As String, tblLines() As String
k = FreeFile Open "c:fichier.txt" For Binary As #k '//Préparation du buffer strBuffer = String$(LOF(k), vbNullChar) '//remplissage à partir du fichier Get #k, , strBuffer Close #k
'//séparation en ligne dans un tableau tblLines = Split(strBuffer, vbCrLf): strBuffer = ""
For k = 0 To UBound(tblLines) '//énumération des lignes MsgBox tblLines(k) Next
'//Si on veut ajouter une ligne : ReDim Preserve tblLines(UBound(tblLines) + 1)
'//Valeur de la nouvelle ligne, on peut laisser "" pour une ligne vide tblLines(UBound(tblLines)) = "Ma nouvelle ligne"
'//Ecriture des modifs ds le fichier :
k = FreeFile Open "c:fichier.txt" For Output As #k Print #k, Join(tblLines, vbCrLf); Close #k
Erase tblLines End Sub
Private Sub Form_Load()
'//EXEMPLE 2 : Ajout direct dans le buffer
Dim k As Integer, strBuffer As String
k = FreeFile Open "c:fichier.txt" For Binary As #k '//Préparation du buffer strBuffer = String$(LOF(k), vbNullChar) '//remplissage à partir du fichier Get #k, , strBuffer Close #k
'//Si on veut ajouter une ligne : strBuffer = strBuffer & vbCrLf & "Ma nouvelle ligne"
'//Ecriture des modifs ds le fichier :
k = FreeFile Open "c:fichier.txt" For Output As #k Print #k, strBuffer; Close #k
strBuffer = "" End Sub
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Dom wrote:
Bonjour à tous,
Je débute sous VB et rencontre un petit "soucis". Au sein d'un fichier texte, je souhaiterai ecrire une ligne vide à la suite de la dernière ligne du fichier (un retour charriot en fait). J'ai tenté de ré écrire le fichier texte en mettant en tampon (buffer) le fichier initial puis en re écrivant le fichier final en l'alimentant du contenu du buffer + 1 ligne vierge. Mais ca marche pas ! J'imagine pourtant que ce ne doit pas être très compliqué. Quelqu'un pourrait il me donner un exemple ? 1000 mercis à vous.
Dom
scraper
Bonjour Jean-Marc (dans news:4170cb70$0$13095$) tu nous disais :
Hello,
alors quand on débute, il faut commencer simple.
oui
Pour ouvrir un fichier en LECTURE (non binaire): => Open "fichier.txt" for INPUT as #f Pour ouvrir un fichier en ECRITURE (non binaire): => Open "fichier.txt" for OUTPUT as #f
Note: en OUTPUT, si le fichier existe déjà, il va être détruit.
et en binaire ?
si je veux que le fichier que j'ouvre soit détruit (enfin, sa vieille version ?) ça fonctionne aussi ?
merci
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Bonjour Jean-Marc
(dans news:4170cb70$0$13095$ba620e4c@news.skynet.be)
tu nous disais :
Hello,
alors quand on débute, il faut commencer simple.
oui
Pour ouvrir un fichier en LECTURE (non binaire):
=> Open "fichier.txt" for INPUT as #f
Pour ouvrir un fichier en ECRITURE (non binaire):
=> Open "fichier.txt" for OUTPUT as #f
Note: en OUTPUT, si le fichier existe déjà, il va
être détruit.
et en binaire ?
si je veux que le fichier que j'ouvre soit détruit (enfin, sa vieille
version ?)
ça fonctionne aussi ?
merci
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
Bonjour Jean-Marc (dans news:4170cb70$0$13095$) tu nous disais :
Hello,
alors quand on débute, il faut commencer simple.
oui
Pour ouvrir un fichier en LECTURE (non binaire): => Open "fichier.txt" for INPUT as #f Pour ouvrir un fichier en ECRITURE (non binaire): => Open "fichier.txt" for OUTPUT as #f
Note: en OUTPUT, si le fichier existe déjà, il va être détruit.
et en binaire ?
si je veux que le fichier que j'ouvre soit détruit (enfin, sa vieille version ?) ça fonctionne aussi ?
merci
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Jean-Marc
"scraper" a écrit dans le message de news:%
Bonjour Jean-Marc (dans news:4170cb70$0$13095$) tu nous disais :
> Pour ouvrir un fichier en ECRITURE (non binaire): > => Open "fichier.txt" for OUTPUT as #f > > Note: en OUTPUT, si le fichier existe déjà, il va > être détruit.
et en binaire ?
Pour les accès binaires, c'est un peu plus subtil. Quand on ouvre en binaire, si le fichier existe, il n'est pas détruit. Le mode binaire est Read/Write.
si je veux que le fichier que j'ouvre soit détruit (enfin, sa vieille version ?) ça fonctionne aussi ?
Non, il faut faire différemment.
=> Voir la doc du Statement Open pour plus de détails.
Remarque enfin: Quand on ouvre en OUTPUT, le fichier n'est pas à proprement détruit. Simplement, si il existait, il est "remis à 0". Si on fait:
Open "c:test" for Output as #f Close #f
Le fichier "C:test" n'est pas effacé, simplement il va rester avec une taille de 0 octets.
Pour manipuler des fichiers TEXTE, le mode de prédilection est vraiment INPUT, OUTPUT et APPEND. Ormis pour des raisons de performances, il n'y a pas ou peu de raisons d'utiliser des accès binaires (pour des fichiers TEXTE). Je ne dis pas qu'il ne faut pas le faire; Simplement, je trouve qu'il est plus naturel d'utiliser Input, Output et Append.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
"scraper" <scraper@pasdespam.fr> a écrit dans le message de
news:%23OpRsO2sEHA.1180@TK2MSFTNGP10.phx.gbl...
Bonjour Jean-Marc
(dans news:4170cb70$0$13095$ba620e4c@news.skynet.be)
tu nous disais :
> Pour ouvrir un fichier en ECRITURE (non binaire):
> => Open "fichier.txt" for OUTPUT as #f
>
> Note: en OUTPUT, si le fichier existe déjà, il va
> être détruit.
et en binaire ?
Pour les accès binaires, c'est un peu plus subtil.
Quand on ouvre en binaire, si le fichier existe, il
n'est pas détruit.
Le mode binaire est Read/Write.
si je veux que le fichier que j'ouvre soit détruit (enfin, sa vieille
version ?)
ça fonctionne aussi ?
Non, il faut faire différemment.
=> Voir la doc du Statement Open pour plus de détails.
Remarque enfin: Quand on ouvre en OUTPUT, le fichier
n'est pas à proprement détruit. Simplement, si il
existait, il est "remis à 0". Si on fait:
Open "c:test" for Output as #f
Close #f
Le fichier "C:test" n'est pas effacé, simplement il
va rester avec une taille de 0 octets.
Pour manipuler des fichiers TEXTE, le mode de prédilection
est vraiment INPUT, OUTPUT et APPEND. Ormis pour des raisons
de performances, il n'y a pas ou peu de raisons d'utiliser des
accès binaires (pour des fichiers TEXTE). Je ne dis pas
qu'il ne faut pas le faire; Simplement, je trouve qu'il est
plus naturel d'utiliser Input, Output et Append.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Bonjour Jean-Marc (dans news:4170cb70$0$13095$) tu nous disais :
> Pour ouvrir un fichier en ECRITURE (non binaire): > => Open "fichier.txt" for OUTPUT as #f > > Note: en OUTPUT, si le fichier existe déjà, il va > être détruit.
et en binaire ?
Pour les accès binaires, c'est un peu plus subtil. Quand on ouvre en binaire, si le fichier existe, il n'est pas détruit. Le mode binaire est Read/Write.
si je veux que le fichier que j'ouvre soit détruit (enfin, sa vieille version ?) ça fonctionne aussi ?
Non, il faut faire différemment.
=> Voir la doc du Statement Open pour plus de détails.
Remarque enfin: Quand on ouvre en OUTPUT, le fichier n'est pas à proprement détruit. Simplement, si il existait, il est "remis à 0". Si on fait:
Open "c:test" for Output as #f Close #f
Le fichier "C:test" n'est pas effacé, simplement il va rester avec une taille de 0 octets.
Pour manipuler des fichiers TEXTE, le mode de prédilection est vraiment INPUT, OUTPUT et APPEND. Ormis pour des raisons de performances, il n'y a pas ou peu de raisons d'utiliser des accès binaires (pour des fichiers TEXTE). Je ne dis pas qu'il ne faut pas le faire; Simplement, je trouve qu'il est plus naturel d'utiliser Input, Output et Append.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
scraper
Bonjour Jean-Marc (dans news:4170f132$0$19548$) tu nous disais :
Pour les accès binaires, c'est un peu plus subtil. Quand on ouvre en binaire, si le fichier existe, il n'est pas détruit. Le mode binaire est Read/Write.
oui
Non, il faut faire différemment.
=> Voir la doc du Statement Open pour plus de détails.
OK, j'irai voir ... merci
Remarque enfin: Quand on ouvre en OUTPUT, le fichier n'est pas à proprement détruit. Simplement, si il existait, il est "remis à 0". Si on fait:
Open "c:test" for Output as #f Close #f
Le fichier "C:test" n'est pas effacé, simplement il va rester avec une taille de 0 octets.
Pour manipuler des fichiers TEXTE, le mode de prédilection est vraiment INPUT, OUTPUT et APPEND. Ormis pour des raisons de performances, il n'y a pas ou peu de raisons d'utiliser des accès binaires (pour des fichiers TEXTE). Je ne dis pas qu'il ne faut pas le faire; Simplement, je trouve qu'il est plus naturel d'utiliser Input, Output et Append.
je comprends, et te remercie de ces précisions .... en fait, c'est pour recopier le contenu de valeurs binaires du Registre dans un fichier txt ? je sais pas, vu le format spécifique des clés binaires, si ça conviendrait, en output ? sinon, effectivement, la procédure me conviendrait relativement ...
bon, je vais me documenter et essayer :-)
merci
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Bonjour Jean-Marc
(dans news:4170f132$0$19548$ba620e4c@news.skynet.be)
tu nous disais :
Pour les accès binaires, c'est un peu plus subtil.
Quand on ouvre en binaire, si le fichier existe, il
n'est pas détruit.
Le mode binaire est Read/Write.
oui
Non, il faut faire différemment.
=> Voir la doc du Statement Open pour plus de détails.
OK, j'irai voir ... merci
Remarque enfin: Quand on ouvre en OUTPUT, le fichier
n'est pas à proprement détruit. Simplement, si il
existait, il est "remis à 0". Si on fait:
Open "c:test" for Output as #f
Close #f
Le fichier "C:test" n'est pas effacé, simplement il
va rester avec une taille de 0 octets.
Pour manipuler des fichiers TEXTE, le mode de prédilection
est vraiment INPUT, OUTPUT et APPEND. Ormis pour des raisons
de performances, il n'y a pas ou peu de raisons d'utiliser des
accès binaires (pour des fichiers TEXTE). Je ne dis pas
qu'il ne faut pas le faire; Simplement, je trouve qu'il est
plus naturel d'utiliser Input, Output et Append.
je comprends, et te remercie de ces précisions ....
en fait, c'est pour recopier le contenu de valeurs binaires du Registre dans
un fichier txt ?
je sais pas, vu le format spécifique des clés binaires, si ça conviendrait,
en output ?
sinon, effectivement, la procédure me conviendrait relativement ...
bon, je vais me documenter et essayer :-)
merci
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
Bonjour Jean-Marc (dans news:4170f132$0$19548$) tu nous disais :
Pour les accès binaires, c'est un peu plus subtil. Quand on ouvre en binaire, si le fichier existe, il n'est pas détruit. Le mode binaire est Read/Write.
oui
Non, il faut faire différemment.
=> Voir la doc du Statement Open pour plus de détails.
OK, j'irai voir ... merci
Remarque enfin: Quand on ouvre en OUTPUT, le fichier n'est pas à proprement détruit. Simplement, si il existait, il est "remis à 0". Si on fait:
Open "c:test" for Output as #f Close #f
Le fichier "C:test" n'est pas effacé, simplement il va rester avec une taille de 0 octets.
Pour manipuler des fichiers TEXTE, le mode de prédilection est vraiment INPUT, OUTPUT et APPEND. Ormis pour des raisons de performances, il n'y a pas ou peu de raisons d'utiliser des accès binaires (pour des fichiers TEXTE). Je ne dis pas qu'il ne faut pas le faire; Simplement, je trouve qu'il est plus naturel d'utiliser Input, Output et Append.
je comprends, et te remercie de ces précisions .... en fait, c'est pour recopier le contenu de valeurs binaires du Registre dans un fichier txt ? je sais pas, vu le format spécifique des clés binaires, si ça conviendrait, en output ? sinon, effectivement, la procédure me conviendrait relativement ...
bon, je vais me documenter et essayer :-)
merci
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Zoury
Salut! :O)
alors quand on débute, il faut commencer simple.
f = FreeFile Open "c:essai.txt" For Input As #f While Not EOF(f) Line Input #f, s Buffer = Buffer & s Wend Close #f
amha, débuter n'est pas une excuse valable pour sacrifier temps et mémoire... il me semble que même la méthode Intput$() est plus performante que la boucle ci-haut. La vitesse d'exécution de ta fonction est inversement proportionnelle à la taille du fichier et cela est dû à la manière dont VB exécute la concaténation de chaine de caractères (Buffer = Buffer & s)..
j'avais posté ce message à l'époque si ça vous intéresse : http://groups.google.com/groups?threadm=OR%24rp4eJDHA.336%40tk2msftngp13.phx.gbl
-- Cordialement Yanick Lefebvre MVP pour Visual Basic
Salut! :O)
alors quand on débute, il faut commencer simple.
f = FreeFile
Open "c:essai.txt" For Input As #f
While Not EOF(f)
Line Input #f, s
Buffer = Buffer & s
Wend
Close #f
amha, débuter n'est pas une excuse valable pour sacrifier temps et
mémoire... il me semble que même la méthode Intput$() est plus performante
que la boucle ci-haut. La vitesse d'exécution de ta fonction est inversement
proportionnelle à la taille du fichier et cela est dû à la manière dont VB
exécute la concaténation de chaine de caractères (Buffer = Buffer & s)..
j'avais posté ce message à l'époque si ça vous intéresse :
http://groups.google.com/groups?threadm=OR%24rp4eJDHA.336%40tk2msftngp13.phx.gbl
--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
f = FreeFile Open "c:essai.txt" For Input As #f While Not EOF(f) Line Input #f, s Buffer = Buffer & s Wend Close #f
amha, débuter n'est pas une excuse valable pour sacrifier temps et mémoire... il me semble que même la méthode Intput$() est plus performante que la boucle ci-haut. La vitesse d'exécution de ta fonction est inversement proportionnelle à la taille du fichier et cela est dû à la manière dont VB exécute la concaténation de chaine de caractères (Buffer = Buffer & s)..
j'avais posté ce message à l'époque si ça vous intéresse : http://groups.google.com/groups?threadm=OR%24rp4eJDHA.336%40tk2msftngp13.phx.gbl
-- Cordialement Yanick Lefebvre MVP pour Visual Basic
Patrice Henrio
amha, Yannick a voulu parler du temps d'exécution plutôt que de la vitesse ... ce dernier est proportionnel à la taille du fichier, ce qui en programmation est considéré comme rapide (temps d'exécution dépendant polynomialement des données). Par contre le reste de son intervention est tout à fait adapté.
"Zoury" a écrit dans le message de news: %
Salut! :O)
alors quand on débute, il faut commencer simple.
f = FreeFile Open "c:essai.txt" For Input As #f While Not EOF(f) Line Input #f, s Buffer = Buffer & s Wend Close #f
amha, débuter n'est pas une excuse valable pour sacrifier temps et mémoire... il me semble que même la méthode Intput$() est plus performante que la boucle ci-haut. La vitesse d'exécution de ta fonction est inversement proportionnelle à la taille du fichier et cela est dû à la manière dont VB exécute la concaténation de chaine de caractères (Buffer = Buffer & s)..
j'avais posté ce message à l'époque si ça vous intéresse : http://groups.google.com/groups?threadm=OR%24rp4eJDHA.336%40tk2msftngp13.phx.gbl
-- Cordialement Yanick Lefebvre MVP pour Visual Basic
amha, Yannick a voulu parler du temps d'exécution plutôt que de la vitesse
... ce dernier est proportionnel à la taille du fichier, ce qui en
programmation est considéré comme rapide (temps d'exécution dépendant
polynomialement des données).
Par contre le reste de son intervention est tout à fait adapté.
"Zoury" <yanick_lefebvre@hotmail.com> a écrit dans le message de news:
%23Ma5ES9sEHA.2316@TK2MSFTNGP12.phx.gbl...
Salut! :O)
alors quand on débute, il faut commencer simple.
f = FreeFile
Open "c:essai.txt" For Input As #f
While Not EOF(f)
Line Input #f, s
Buffer = Buffer & s
Wend
Close #f
amha, débuter n'est pas une excuse valable pour sacrifier temps et
mémoire... il me semble que même la méthode Intput$() est plus performante
que la boucle ci-haut. La vitesse d'exécution de ta fonction est
inversement proportionnelle à la taille du fichier et cela est dû à la
manière dont VB exécute la concaténation de chaine de caractères (Buffer =
Buffer & s)..
j'avais posté ce message à l'époque si ça vous intéresse :
http://groups.google.com/groups?threadm=OR%24rp4eJDHA.336%40tk2msftngp13.phx.gbl
--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
amha, Yannick a voulu parler du temps d'exécution plutôt que de la vitesse ... ce dernier est proportionnel à la taille du fichier, ce qui en programmation est considéré comme rapide (temps d'exécution dépendant polynomialement des données). Par contre le reste de son intervention est tout à fait adapté.
"Zoury" a écrit dans le message de news: %
Salut! :O)
alors quand on débute, il faut commencer simple.
f = FreeFile Open "c:essai.txt" For Input As #f While Not EOF(f) Line Input #f, s Buffer = Buffer & s Wend Close #f
amha, débuter n'est pas une excuse valable pour sacrifier temps et mémoire... il me semble que même la méthode Intput$() est plus performante que la boucle ci-haut. La vitesse d'exécution de ta fonction est inversement proportionnelle à la taille du fichier et cela est dû à la manière dont VB exécute la concaténation de chaine de caractères (Buffer = Buffer & s)..
j'avais posté ce message à l'époque si ça vous intéresse : http://groups.google.com/groups?threadm=OR%24rp4eJDHA.336%40tk2msftngp13.phx.gbl
-- Cordialement Yanick Lefebvre MVP pour Visual Basic