Visual Basic .Net:Fichiers texte

Un article de WikiTuto.

Jump to: navigation, search
  • VB .Net un langage objet
  1. Définition du langage Objet
  2. La syntaxe objet
  3. La programmation événementielle
  • L'interface de Visual Studio
  1. Structure des applications
  2. Prise en main
  • Premiers contrôles
  1. La classe Form
  2. La classe Button
  3. La classe Label
  4. La classe LinkLabel
  5. La classe Textbox
  6. La classe Richtextbox
  7. La classe Checkbox
  8. Les classes Radiobutton, GroupBox et Panel
  • Les bases du langage
  1. Les variables
  2. Les opérateurs
  3. Les tests
  4. Les boucles
  5. Les fonctions prédéfinies
    1. Fonctions de chaînes
    2. Fonctions et méthodes numériques
    3. Fonctions de conversion
    4. Fonctions d'interface
    5. Les espaces de noms
  • Les collections
  1. La notion de Collection
  2. Désigner les contrôles par leur indice
  3. La boucle For Each ... Next
  4. Tester le type d'un contrôle
  5. Créer ses propres collections par du code
  6. Créer dynamiquement des contrôles
  7. Remarque finale
  • Les contrôles listes
  1. La classe Listbox
  2. La classe Combobox
  3. La classe CheckedListBox
  4. La classe ImageList
  5. La classe Listview
  6. La classe Treeview
  • Les Événements
  1. La notion de Focus
  2. Les événements clavier
  3. Les événements Souris
  4. Glisser - Déposer
  • Autres contrôles
  1. La classe TabControl
  2. Les classes HScrollBar, VScrollBar et TrackBar
  3. La classe ProgressBar
  4. Les classes ToolTip et HelpProvider
  5. Les classes DomainUpDown et NumericUpDown
  6. Les classes DateTimePicker et MonthCalendar
  7. La classe Timer
  8. Les classes de boîtes de dialogue communes
  • Les graphismes
  1. Couleurs et Propriétés
  2. Images et Contrôles
  3. Gérer intelligemment les images
  4. méthodes graphiques
  • Les fichiers texte
Source : Christophe Darmangeat

Sommaire

Introduction

Comme nous l'avons vu lors d'un excellentissime cours d'algorithmique, malgré les progrès et la sophistication croissante des langages de programmation, le fichier texte reste la voie la plus rustique - mais aussi une des plus sûres - pour stocker des données entre deux exécutions d'un programme. Aussi allons-nous traiter de l'accès aux fichiers, en nous cantonnant à la technique de base : le fichier texte en accès séquentiel. C'est ce qu'on appelle un chapitre - relativement - reposant.

Les instructions liées aux fichiers texte

Bon, là, quand on connaît la musique - c'est-à-dire le concept du fichier texte - il n'y a plus qu'à apprendre la syntaxe. Le plus difficile, c'est d'arriver à choisir, parmi la pelletée d'instructions que propose VB pour traiter des fichiers texte (et ça ne manque pas, ils sont vraiment fous !) une bonne petite technique qui soit simple et qui marche bien. Bande de petits veinards, ce boulot, c'est moi qui me le suis cogné, et voilà le résultat de mes savantes recherches.

Syntaxe

Pour ouvrir un fichier texte, le plus facile est de passer par l'instruction FileOpen, selon la syntaxe suivante :

FileOpen(numéro, nom du fichier, mode)
  • numéro est un entier compris entre 1 et 255 (ça devrait suffire assez largement...)
  • nom du fichier est une chaîne de caractères
  • mode est une valeur choisie parmi OpenMode.Input (ouverture en lecture), OpenMode.Output (ouverture en écriture) ou OpenMode.Append (ouverture en ajout)

Ensuite, pour recopier la ligne suivante du ficher numéro 3 dans la variable Toto, on écrira :

Toto = LineInput(3)

De même, pour recopier la variable Tutu en tant que ligne dans le fichier numéro 5, on écrira :

PrintLine(5, Toto)

La fonction retournant une valeur booléenne indiquant si l'on se trouve à la fin du fichier est évidemment EOF(), avec le numéro dudit fichier en paramètre. Enfin, pour fermer le fichier numéro 1, on emploiera :

FileClose(1)

Récupérer les lignes dans des variables

Sur chaque ligne (enregistrement) de notre fichier, les différentes informations (les différents champs) seront séparés par un caractère séparateur (on le choisit généralement parmi la tabulation, la virgule, le point-virgule, et quelques autres).

Il va donc falloir, à chaque lecture de ligne du fichier, procéder à un découpage de cette ligne entre les différentes variables qui la composent. Mais comme nous avons de la chance dans notre malheur, nous allons pouvoir nous dispenser de nous taper une boucle lisant cette ligne caractère par caractère, afin d'y localiser les occurrences du caractère séparateur (chose qui était inéluctable dans les langages traditionnels). VB .Net propose en effet deux fonctions de découpage et de recomposition automatique des chaînes, qui vont grandement soulager notre peine.

Fonction split

La fonction Split permet de constituer automatiquement un tableau de Strings à partir d'une chaîne de caractères dans laquelle figure un caractère de séparation. Ainsi, en exécutant le code suivant :

Dim S as String
Dim R() as String
S ="Ceci/est/un/message/codé"
R = Split(S, "/")

On récupère un tableau R de cinq cases, la première contenant "Ceci", la seconde "est", la troisième "un", etc. Et VB.Net autorisant des écritures beaucoup plus synthétiques, nous pouvons réécrire le code ci-dessus en deux coups de cuiller à pot :

Dim S as String = "Ceci/est/un/message/codé"
Dim R() as String = Split(S, "/")

Éventuellement, rien ne nous empêche ensuite de rebasculer les différents éléments de R dans une structure, ou dans un tableau de structures, si nous trouvons cela plus pratique (et il y a neuf chances sur dix pour que cela le soit effectivement). Simplement, je réinsiste, il ne s'agira pas de structures comportant des chaînes de longueur fixe.

Fonction Join

Dans l'autre sens, nous trouvons en quelque sorte l'exact inverse de la fonction Split, en la personne de la fonction Join, puisque celle-ci constitue une chaîne unique à partir d'un tableau de Strings et d'un séparateur. Ainsi, si je repars du tableau R constitué un peu plus haut et que j'écris :

Dim Z as String
Z = Join(R, ";")

Z contiendra "Ceci;est;un;message;codé". Magique, non ? Évidemment, on aurait même pu se contenter de :

Dim Z as String = Join(R, ";")

Résumons-nous :

  • Split permet de récupérer dans un tableau les différents champs à partir d'une ligne d'un fichier texte organisée par un caractère séparateur
  • Join permet, à l'inverse, de constituer une ligne organisée par un caractère séparateur à partir de différents champs rangés dans un tableau.

processus-type pour le traitement d'un fichier texte

On peut donc dégager le processus-type pour le traitement d'un fichier texte sous VB.Net (sachant que ce fichier devra être organisé via un caractère séparateur) :

  1. déclaration d'une structure adéquate
  2. déclaration d'un tableau de cette structure, non dimensionné
  3. boucle de lecture du fichier, au sein de laquelle, pour chaque ligne :
  4. on lit la ligne suivante
  5. on la découpe par Split dans un tableau de Strings (de stockage temporaire)
  6. on agrandit le tableau des structures
  7. on recopie les informations du tableau de stockage temporaire vers le nouvel emplacement du tableau de structures
  8. fin de la boucle

Et voilà. Ensuite, on procède à tous les traitements nécessaires (en mémoire vive, comme il se doit). Lorsque c'est terminé, on recopie le tableau de structures vers le fichier :

  1. boucle de parcours du tableau de structure
  2. pour chaque élément, on recopie les informations dans un tableau de Strings temporaire
  3. on constitue par Join une chaîne à partir du tableau temporaire
  4. on copie cette chaîne dans le fichier
  5. fin de la boucle

Exercices

L'exercice qui suit, sans être vraiment méchant, n'est pas particulièrement facile. Il demande de gérer un fichier texte - vous le trouverez ci-dessous.

Il pose également (et surtout ?) quelques problèmes liés à la gestion d'une seconde Form, problèmes que nous avions évité jusque là, et dont je ne traite pas dans ce site, mais qu'il faut bien aborder un jour ou l'autre. C'est ici un cas assez facile, sur lequel vous trouverez des indications sur le site de Microsoft.

Quant au score obtenu lors de ce grand jeu, il s'agit tout bêtement d'un nombre aléatoire entre 1 et 1000.

Exercice Exécutable Fichier Sources
Top 100 [1][2][3]

Voir aussi

Liens externes

Source : Christophe Darmangeat

Boîte à outils
Annuaire gratuitCe site est listé dans la catégorie Informatique : Aide et astuces en informatique Annuaire