Il existe trois mode d'accès aux fichiers dans Visual Basic 6 :
- Les fichiers à accès séquentiel ne peuvent ouvrir que
des fichiers avec un contenu textuel.
- Les fichiers à accès direct sont formés en général de
plusieurs enregistrements de longueur fixe.
- Les fichiers binaires sont tous les fichiers avec un
contenu graphique.
Il existe trois manières d'ouvrir un fichier texte :
- La 1ère manière est l'ouverture d'un fichier uniquement en lecture à
l'aide de l'instruction Input.
- La 2ème manière est l'ouverture d'un fichier uniquement en écriture à
l'aide de l'instruction Output.
- La dernière manière est l'ouverture d'un ficher en écriture aussi mais à
la seule différence de la précédente manière, les nouvelles données sont
entrées à la suite de l'enregistrement précédent. Pour cela, on utilise
l'instruction Append.
Pour comprendre son fonctionnement, prenons un exemple. Lancez Visual Basic et
ouvrez un nouveau projet. A la propriété Caption de la feuille Form1, affectez-lui
la valeur "Bloc-note". Sur la feuille Form1, tracez un rectangle assez grand en
utilisant le contrôle
TextBox. Allez dans la boîte de
propriété du contrôle TextBox et allez à sa propriété Text. Effacez-y le contenu.
Ensuite, à sa propriété Multiline, choisissez True.
Maintenant, placez sur la feuille 4 contrôles CommandButton. Pour chacun des 4
contrôles, donnez leur, les valeurs "&Ouvrir", "&Effacer", "&Sauvegarder" et "&Quitter" à la propriété
Caption et les valeurs "Ouvrir","Effacer", "Sauvegarder" et "Quitter" à la propriété Name.
Voici l'allure que la feuille form1 doit avoir à présent :
Pour que ce bloc-note soit opérationnel, il faut définir des procédures qui gèrent
les actions de chaque contrôle présent dans la feuille.
Double-cliquez sur le bouton de commande "Ouvrir" et écrivez la portion
de code suivant :
Private Sub ouvrir_Click()
On Error Resume Next
Open "C:\Windows\Bureau\note.TXT" For Input As #1
retour = Chr$(13) + Chr$(10)
Line Input #1, texte
tout = texte
If Len(tout) <> 0 Then
While Not EOF(1)
Line Input #1, texte
tout = tout + retour + texte
Wend
End If
Close #1
End Sub
Explication :
- L'instruction On error Resume Next permet d'ignorer toute
erreur que peut entraîner cette procédure.
- L'instruction Open "C:\Windows\bureau\note.TXT" For Input
As #1 permet d'ouvrir le fichier "note" situé sur le bureau. Lorsque
l'application est exécutée pour la première fois, une erreur 53 devrait
apparaître car le fichier "note" n'existe pas encore. Mais grâce à
l'instruction On Error Resume Next, cette erreur
sera tout simplement ignorée.
- L'instruction retour = Chr(13)$ + Chr(10)$ permet à
la ligne suivante. Le code ASCII 13 correspond au "retour chariot",
c'est-à-dire de revenir à gauche du texte et 10 au "passage à la ligne",
c'est-à-dire d'aller à la ligne suivante.
- L'instruction Line Input permet de placer dans la variable "texte" le contenu
de la première ligne du fichier "note.TXT".
- Ensuite, le contenu de la variable "texte" est à son tour, affecté à la variable "tout".
- Le test avec l'instruction If permet de vérifier que le fichier "note.TXT"
n'est pas vide à l'aide de la fonction Len qui compte le nombre de lettres ou tout autre symbole
contenu dans la variable "tout". Si le nombre de lettres est différent de zéro alors, les
instructions à l'intérieur du test sont exécutés.
- La boucle avec While permet de parcourir tout le fichier à la recherche d'éventuelles autres lignes
que la première. La fonction EOF permet de savoir si l'on arrive à la fin
du fichier ouvert. Cette boucle est donc exécutée jusqu'à ce que tout le contenu du fichier soit
placé dans la variable tout. Les chaînes de caractères affectées à la variable "tout" sont
concaténées (concaténées = ajoutées) aux précédentes contenues dans la variable. La variable
"retour" provoque un retour à la ligne à chaque fois que cela est nécessaire.
- Lorsque tout le contenu du fichier sera affecté à la variable "tout", cette dernière sera à son
tour affectée à la propriété Text du contrôle TextBox. Ce qui provoquera l'affichage du contenu
du fichier dans le contrôle TextBox.
- L'instruction Close ferme le fichier ouvert en lecture.
Écrivons maintenant la portion de code correspondant au bouton "Sauvegarder" :
Private Sub Sauvegarder_Click()
Open "C:\Windows\Bureau\note.TXT" For Output As #1
Print #1, Text1.Text
Close #1
End Sub
Explication :
- L'instruction Open "C:\Windows\Bureau\note.TXT" For Output As #1 ouvre le fichier
"note.TXT" en écriture.
- Le contenu de la zone de texte "Text1" est ensuite copié dans le fichier à l'aide de l'instruction
Print.
- Enfin, le fichier est fermé à l'aide de l'instruction Close.
Passons à l'écriture de la procédure concernant le bouton "Effacer" :
Private Sub Effacer_Click()
Text1.Text = ""
Text1.SetFocus
End Sub
Explication :
- L'instruction Text1.Text = "" permet d'effacer tout ce qui se trouve sur la
zone de texte du contrôle TextBox.
- L'instruction Text1.SetFocus donne le focus à la zone de texte, c'est-à-dire
que cette instruction provoque l'affichage d'une barre d'insertion dans la zone de texte.
Enfin, écrivons la portion de code correspondant à l'action du bouton "Quitter" :
Private Sub Quitter_Click()
End
End Sub
Explication :
- L'instruction End permet de quitter l'application en cours.
Voilà, c'est tout. A présent, exécutez le programme et voyez ce que ça donne. Bien sûr, ce n'est qu'un
simple petit programme mais en acquérant plus de connaissances par la suite, vous pourrez l'améliorer, lui
ajouter de nouvelles fonctions, action,...
Les fichiers à accès direct contiennent des données contenues dans plusieurs
enregistrements fixes. Pour déclarer un enregistrement, on utilise l'instruction
Type pour créer un nouvel type de variable. Ensuite, On déclare une variable
de ce type. Pour ouvrir un fichier à accès direct, on utilise l'instruction
Open en indiquant la longueur de chaque enregistrement.
Ainsi, un fichier à accès direct s'ouvre de la manière suivante :
Open "C:\Windows\Bureau\fichier.adr" For Random As #1 Len = Len(Adr)
où adr est le nom d'une variable de type prédéfini.
La lecture d'un enregistrement s'effectue de la manière suivante:
Get #1, Numéro, adr.
L'écriture dans un fichier à accès direct s'effectue de la manière suivante:
Put #1, Numéro, adr.
Dans la mesure où le fonctionnement des fichiers à accès binaires est très proche de celui des fichiers à
accès direct, reportez-vous aux fichiers à accès direct.