Télécharger la présentation
1
Stockage de données
2
Présentation Le stockage des données dans les variables et tableaux est temporaire : Nous avons vu la notion de durée de vie des variables Les variables et donc les données sont détruites lorsque l’on quitte l’application. La mémoire est restituée au système d’exploitation Pour les données en entrée : elles sont soit recueillies manuellement soit assignées de manière statique dans le code (constantes) Il nous faut une solution permettant la (ré)utilisation des données d’une exécution à l’autre
3
Gestion de fichiers Les fichiers permettent la rétention permanente de larges quantités de données Les données contenues dans des fichiers sont dites permanentes Les fichiers sont stockés dans des unités périphériques : disques durs, disques et bande magnétiques, disques optiques,… Comme utilisateurs de Windows, vous êtes déjà familier avec la notion de fichier, leurs regroupements en répertoires et leur classification en arborescence (de fichiers).
4
Gestion de fichiers La norme pour les noms de fichiers sous windows (9x / 2000 / Me / XP/ 7) : Composition : caractères alphanumériques (lettres, chiffres), tirets, trait de soulignement, espace Maximum de 255 caractères Extension facultative : un point et trois caractères (qui indiquent le type du fichier : .bas, .prw, .wav, .txt, .exe, …)
5
Gestion de fichiers Le nombre total de fichiers pouvant être ouverts par le système est limité (cela dépend du système, avec VB c’est 255) Chaque fichier dispose d’un numéro de canal (la fonction FreeFile permet de laisser au système le soin de définir ce numéro) Le travail sur les fichiers ce décompose en trois phases : Ouverture Traitement Fermeture
6
Gestion de fichiers VB permet de lire et écrire toute sorte de fichiers (graphiques, sons, binaires, textes, données). On distingue les fichiers à accès séquentiel et les fichiers à accès aléatoire (ou accès direct). Il ne faut pas confondre les fichiers de code (exécutable ou sources) et les fichiers de données.
7
Fichiers à accès séquentiel
Par simplification, pour les fichiers à accès séquentiel, nous ne nous intéresserons qu’à la gestion des fichiers texte (contenant des données textuelles). Un fichier à accès séquentiel est composé d’une suite de lignes de texte séparé par un séparateur : un retour à la ligne (Chr(13)&Chr(10) ou CRLF) Carriage Return / Line Feed
8
Fichiers à accès séquentiel
Enregistrement Enregistrement CR LF Chr(13)&Chr(10) J u d y CR LF CR LF J u d y Chaîne (String) Bit / Octet
9
Fichiers à accès séquentiel
Syntaxe : Dim Canal As Integer ‘déclaration du canal Canal = FreeFile ‘initialisation du canal Open <nomfichier> For <mode> As #Canal ‘ Traitement Close #Canal ‘fermeture du fichier Où <mode> peut prendre trois valeurs : Input : lecture seule Output : accès en écriture, le fichier est vidé de son contenu préalable Append : ajout non destructif, les données sont ajoutées à la fin du fichier
10
Fichiers à accès séquentiel
Les différents traitements sont : Line Input #<canal>,<var> : fonction de lecture d’une ligne de texte (ouvert en Input) Print #<canal>,<var> : fonction d’écriture dans un fichier (ouvert en Output ou en Append) EOF(<canal>) (End Of File) : fonction booléenne de repérage de fin de fichier (une lecture au-delà de la fin de fichier est une erreur système)
11
Gestion de fichiers VB dispose d’instructions équivalentes à celles du DOS pour les répertoires : Chdrive <lecteur> : change le lecteur courant ChDir <chemin> : change le répertoire courant Curdir : retourne le nom du répertoire courant Mkdir <répertoire> : crée le répertoire spécifié Rmdir <répertoire> : détruit le répertoire (vide) spécifié Les arguments (en entrée comme en sortie) doivent être des chaînes de caractère : variables (String) ou valeurs (« »)
12
Gestion de fichiers VB dispose d’instructions équivalentes à celles du DOS pour les fichiers : Dir(masque, attribut): retourne le nom du premier fichier correspondant au masque et possédant l’attribut considéré FileAttr, FileDate, File : retournent respectivement les attributs, la date de création et la longueur FileCopy source, destination : copie le fichier source sous le nom destination Kill <nom> : supprime le fichier indiqué (pas de corbeille) Name <ancien> As <nouveau> : renomme le fichier ancien en nouveau
13
Fichiers à accès séquentiel
Exemple : Private Sub ExempleFile() Dim canal As Integer 'déclaration du canal Dim courante As String 'déclaration de la ligne courante canal = FreeFile 'initialisation du canal MsgBox(CurDir) 'affiche le répertoire courant ChDir "c:\test" 'change le répertoire courant MsgBox(CurDir) 'affiche le nouveau répertoire Open "test.txt" For Input As #canal 'ouvre le fichier Do Until EOF(canal) 'tant que pas fini Line Input #canal, courante 'lire la prochaine ligne MsgBox(courante) 'l'afficher Loop 'fin de boucle Close #canal 'fermeture du fichier End Sub 'fin de procédure
14
Fichiers à accès direct /aléatoire
Les fichiers à accès direct permettent un accès rapide à une donnée précise dans le fichier (d’où leur(s) nom(s)). Les fichiers à accès direct sont structurés différemment (ce n’est pas que le mode d’accès qui change) : ils sont une collection d’enregistrements de même taille. On utilise un type utilisateur (Type)pour définir ces enregistrements (avec une contrainte de définition précise de la taille: String * X, tableaux de taille fixe, …)
15
Hiérarchie de données Fichier J u d y Chaîne (String) Bit / Octet
Enregistrement J u d y Chaîne (String) Bit / Octet
16
Fichiers à accès direct / aléatoire
Ouverture / crétation d’un fichier à accès direct : Dim Canal1 As Integer ‘déclaration du canal Canal1 = FreeFile ‘initialisation du canal Open <nomfichier> For Random [Access <mode>] As #Canal1 Len=Len(<variable_enregistrement>) ‘ Traitement des données Close #Canal ‘fermeture du fichier Par défaut, les fichiers à accès direct sont ouverts en lecture et en écriture, mais on peut préciser : read, write, read write
17
Fichiers à accès direct / aléatoire
Lecture des données, syntaxe : Get #Canal, <num>, variable_réception Get affecte les valeurs de l’enregistrement numéro <num> aux champs correspondants de variable_réception Adresser un enregistrement du fichier qui n’existe pas est une erreur dynamique. La fonction LOF(Canal) renvoie la taille du fichier en nombre d’octets du fichier. LOF(Canal)/Lenb(variable_réception) nous donne donc la taille du fichier en nombre d’enregistrements (pratique, mais peu sur).
18
Fichiers à accès direct / aléatoire
Écriture des données, syntaxe : Put #Canal, <num>, variable_réception Put affecte les valeurs de l’enregistrement variable_réception aux champs correspondants de l’enregistrement numéro <num> du fichier de canal Canal EOF(Canal) renvoie vraie lorsque la fin du fichier est rencontrée
19
Fichiers à accès direct / aléatoire
Exemple d’utilisation : Private Type ClientRecord accountNumber As Integer lastName As String * 15 firstName As String * 15 balance As Currency End Type Sub Initialisation() ‘procédure d’initialisation du fichier Dim BlankClient As ClientRecord ' type utilisateur Dim x as integer Open "c:\clients.rnd" For Random Access Write As #1 Len=Len(BlankClient) For x = 1 To 100 Put #1, x, udtBlankClient ' écrit 100 enregistrements Next Close #1 ' ferme le fichier End Sub
20
Exercices - Fichiers séquentiels -
Écrire un programme qui : Ouvre un répertoire Tests dans Mes documents (vous devez avoir déjà crée ce répertoire) Y crée un fichier test.txt et y insère la liste des numéro, nom et prénom d’au moins trois étudiants. Ferme le fichier. Écrire un programme qui Demande à l’utilisateur le numéro de l’étudiant recherché, Affiche toutes les informations sur cet étudiant Ouvre votre fichier précédemment créé Affiche son contenu de manière « ergonomique » dans la feuille Feuil1.
21
Exercices - Fichiers à accès direct -
On se propose d’écrire un programme permettant de gérer les commandes des différents clients. Un client est défini par un numéro, un nom et une adresse. Une commande est définie par un numéro, une date, le numéro du client qui a passé la commande et enfin par le numéro et la quantité du produit concerné. Un produit est défini par un numéro, une désignation, un prix unitaire et un stock. Ecrire un programme qui : Crée un répertoire Commandes Dans ce répertoire, il crée trois fichiers : Clients.mie contenant la liste des clients. Commandes.mie contenant la liste des commandes. Produits.mie contenant la liste des produits. Une fois ces trois fichiers crées, votre programme demande à l’utilisateur ce qu’il veut faire. Selon la réponse de l’utilisateur, le programme applique le traitement demandé : 1 : l’utilisateur pourra saisir un nouveau client 2 : il pourra saisir un nouveau produit 3 : il pourra saisir une nouvelle commande.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.