si elle ne l'est pas.
Placez donc avant la commande input :
if eof(1)=false then input......
Voila, votre code devrait ressembler à ça :
'on définit les variables
dim strLigne as String
Private sub Command1_click()
'on ouvre le fichier
open "c:\test.txt" for input as #1
end sub
private sub command2_click()
if eof(1)=false then
'si la fin du fichier n'est pas atteinte, on lit
input #1,strLigne
msgbox(strLigne)
else
'sinon
msgbox("Fin du fichier atteinte")
end if
end sub
public sub command3_click()
'on ferme le fichier
close #1
end sub
Attention, cette méthode bien que simple pose de nombreux problème, en effet, la commande input ne prend pas uniquement les retours à la ligne réelle comme séparateur, elle prend également certains signes de ponctuations comme les virgules, il n'est donc pas pratique de lire certains contenus de fichier avec une tel méthode, puisque la commande ne fait pas la différence entre une virgule et un retour à la ligne, de plus ceux-ci ne sont pas renvoyés dans la variable, il est donc impossible de savoir quel est le caractère séparateur que l'on vient de rencontrer.
De plus il est assez gênant de devoir parcourir tout le fichier pour atteindre une ligne située à la fin de celui-ci, en particulier pour les gros fichiers.
Vous pouvez enchaîner plusieurs variable dans la même commande input.
ex:
input #1,strText1,strText2,......
Dans ce cas, la commande placera le contenu d'une 1ere ligne dans la variable dans strText1 et de la ligne suivante dans strText2
Pour lire une ligne complète utilisez line input #1, strLigne
Dans ce cas la, la seule séparation dont il tiendra compte est le retour à la ligne.
Ecriture en mode séquentiel (Output)
Bon, savoir lire un fichier c'est bien, savoir écrire dedans c'est encore mieux. Nous allons voir ici comment écrire dans un fichier en mode séquentiel.
Pour la façons d'ouvrir les fichiers allez voir ici, on emploi la même méthode que la lecture sauf qu'au lieu de mettre input vous mettez output, ceci donne :
open "c:\test.txt" for output as #1
Bon, pour commencer, créez une application, semblable à la précédente :
Un bouton "ouvrir" avec dans son évènement click la commande d'ouverture
Un bouton "Fermer" avec dans son évènement click la commande de fermeture
Une boite de texte multilignes ou non
Un bouton "Ajouter au fichier"
Il existe deux commandes d'écriture pour le mode output :
Print numéro,variable : Cette commande ajoute une ligne au fichier sélectionné et y écrit le contenu de la variable. Attention, si le fichier contient déjà du texte, tout le texte sera effacer lors de la 1ere écriture (en effet l'écriture séquentielle écrit dans le fichier ligne par ligne, mais il est impossible d'écrire à la place d'une ligne ni d'en sauter ni d'écrire avant une ligne), C'est son défaut, il nous faut toujours réécrire la totalité du fichier. Print traite indifféremment tous les types de variable.
Write numéro,variable : Cette commande est la fausse jumelle de print, elle fonctionne de la même manière à la différence qu'elle tien compte du type de variable que l'on utilise, elle n'écrit pas la même chose en fonction que la variable soit en long, string, boolean, byte...Elle est par conséquent plus performante que la commande print, suivant l'utilisation que l'on veut en faire, en effet celle-ci rajoute des marqueurs en fonction du type de variable utilisé.
Dans notre exemple nous utiliserons la commande print, mais le traitement serais le même avec write. Pour mieux comprendre la différence, je vous conseil d'essayer en modifiant le code que vous allez faire.
Placez dans l'évènement click du bouton "ajouter au fichier" les commandes suivantes :
print #1,text1.text
text1.text=""
Voila, testez, ouvrez le fichier, écrivez quelques mots dans la boite de texte et faites "Ajouter...", puis faite fermer et ouvrez le fichier avec bloc-note, vous constaterez que le texte que vous avez écrit y est ajouté.
Ecrivez maintenant un texte, ajoutez le au fichier, puis ajoutez en un ou plusieurs autres, et regardez.
Votre code devrait ressembler à ça :
private sub command1_click()
'on ouvre le fichier
open ("c:\test.txt") for ouput as #1
end sub
private sub command2_click()
'on ecrit dans le fichier
print #1,text1.text
'on efface le texte de la boite de texte
text1.text=""
end sub
private sub command3_click()
'on ferme le fichier
close #1
end sub
La différence de gestion de type de variable entre Write et Print n'offre qu'un avantage relatif pour la majorité des variables toutefois elle se démarque pour la gestion des variables de type boolean, en effet alors que la commande print écrit dans le fichier le nom Français (ou autre en fonction de la langue du PC) la valeur de la variable ce qui est problématique lors de la lecture, la commande Write elle écrit le véritable contenu de la variable en la précédant d'un #.
Vous pouvez enchaîner plusieurs variable dans la même commande Write ou Print.
ex:
write #1,strText1,strText2,...
Dans ce cas, la commande placera le contenu de la variable de strText1 dans la 1ere ligne et de strText2 dans la suivante.
3nj0y y0ur c0d1ng w1th Neku.
--Message édité par Neku le 19-02-06 à 01:11:57--
Leandre aka Neku