1 / 26

Chapitre 4

Chapitre 4. Manipulation des fichiers dans le langage VB. Plan. Fichiers en VB Types de fichiers en VB: séquentiels (Textes) à accès direct Random Binary Différentes opérations de gestion de répertoires et de fichiers en VB. Introduction.

noreen
Download Presentation

Chapitre 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapitre 4 Manipulation des fichiers dans le langage VB Cours VB 2007/2008

  2. Plan • Fichiers en VB • Types de fichiers en VB: • séquentiels (Textes) • à accès direct • Random • Binary • Différentes opérations de gestion de répertoires et de fichiers en VB Cours VB – ISG 2007/2008

  3. Introduction • Un fichier est un ensemble de données qui sert soit: • à la lecture : pour rentrer des informations dans un programme; • à l’écriture : pour sauvegarder les résultats obtenus. • Les fichiers sont caractérisés par deux notions : • le mode d’organisation : comment sont organisées les données dans le fichier (par enregistrement, en bloc…) • le mode d’accès : comment sont accédées les données dans le fichier (séquentiel, direct). • Ces caractéristiques influencent l’utilisation des fichiers selon les langages de programmation. • La combinaison de ces derniers offre différents types de fichiers. • L’utilisation d’un fichier se fait toujours selon les phases suivantes : • Ouverture du fichier • Traitement • Fermeture du fichier Cours VB – ISG 2007/2008

  4. I. Les fichiers en VB • VB gère : • Les fichiers séquentiels • Les fichiers à accès direct • Les noms de fichiers obéissent aux règles du DOS : La longueur est limitée à 8 caractères maximum et une extension de 3 caractères au maximum. • L’instruction Open est employée pour ouvrir un fichier, sa syntaxe varie suivant le type de fichier et le mode d’accès choisi. • VB numérote les fichiers ouverts. Exemple : Open nom_fichier For Input As #1affecte le n° 1 au fichier. C’est par ce numéro que l’on désigne le fichier dans les instructions. • A la fin du travail il faut fermer le fichier avec l’instruction Close. Cours VB – ISG 2007/2008

  5. I.1 Syntaxe de L'instruction Open OPEN FileName FOR AccessMode [Lock] AS [#] FileNumber [LEN=RecLength] OPEN “c:\fichier.txt” FOR Random AS # 1 LEN= len(Etudiant) OPEN “c:\fichier.txt” FOR Random Lock Read AS # 1 LEN= len(Etudiant) OPEN “c:\fichier.txt” FOR Binary AS #1 OPEN “c:\fichier.txt” FOR Input AS #1 OPEN “c:\fichier.txt” FOR Append AS #1 OPEN “c:\fichier.txt” FOR Output AS #1 Séquentiel Direct Cours VB – ISG 2007/2008

  6. I.2 Syntaxe de L'instruction Close • Lorsqu’on finit de travailler avec un fichier il faut le fermer avec l’instruction Close. Syntaxe: Close [#] FileNumber Exemple: Close #1 Close FileNumber Cours VB – ISG 2007/2008

  7. I.3 Fonctions sur les fichiers • La fonction FreeFileretourne un numéro disponible pour l’ouverture d’un fichier. Syntaxe: num = FreeFile • La fonction LOF (Length Of File) renvoie la taille en octets d'un fichier ouvert. C'est une instruction très pratique pour lire un fichier sans connaître sa taille au départ. Syntaxe: LOF([#] NumFich) • La fonction EOF (End Of File) renvoie true si c'est la fin du fichier et false sinon Syntaxe: EOF(NumFich) Cours VB – ISG 2007/2008

  8. II. Accès séquentiels • Ce type d’accès est approprié pour les fichiers textes (blocs continus) qui contiennent des caractères alphanumériques. • Les fichiers séquentiels sont ouverts: • soit en Input: en lecture seule ; • soit en Output : en écriture à partir du début, le fichier est alors réinitialisé, il perd son contenu s’il en avait ; • soit encore en Append: on rajoute des informations à partir de la fin sans perdre ce qu’il contient déjà. • Dans les fichiers textes chaque ligne est limitée par les symboles CR-LF (Retour Chariot et Fin de Ligne). • A chaque accès (lecture ou écriture), on traite le fichier: • caractère par caractère ou • ligne par ligne. Cours VB – ISG 2007/2008

  9. II.1 Lecture d'un fichier séquentiel • Le processus de base pour lire un fichier texte est le suivant: 1- Ouvrir le fichier en utilisant l'instruction Open nom_fichier For Input As #NumFich 2- Lire les données provenant du fichier en utilisant les instructions: 3- Fermer le fichier en utilisant l'instruction Close Cours VB – ISG 2007/2008

  10. Exemple 1: Lecture d'un fichier séquentiel Exercice: Ecrire un programme qui permet de lire soit ligne par ligne ou tout le fichier nommé "Fich_1.txt" stocké dans le lecteur E puis placez son contenu dans une zone texte d'une feuille. Solution: • Propriétés du TextBox • Name = TXTfile • MultiLigne = True 'affichage sur plusieurs lignes • ScrollBar = Both 'affichage des ascenseurs vertical et horizontal • Propriétés du CommandButton 1 • Name = cmdLireTout • Caption = Lire tout le fichier • Propriétés du CommandButton 2 • Name = cmdLireLigne • Caption = Lire ligne par ligne le fichier Cours VB – ISG 2007/2008

  11. Exemple 1: Lecture d'un fichier séquentiel Private Sub CMDLireTout_Click() ' Détermine un numéro de fichier valide NumFich = FreeFile ' Ouverture du fichier "Fich_1.txt" sous E: en lecture Open "E:\Fich_1.txt" For Input As #NumFich 'Affectation dans la propriété Text du contrôle TXTfile de tout le contenu du fichier TXTfile.Text = Input( LOF(NumFich), #1) Close #NumFich ‘Fermeture du fichier End Sub • L'événement Click sur le bouton de commande nommé CMDLireTout de la feuille exécutera le code suivant: Cours VB – ISG 2007/2008

  12. Exemple 1: Lecture d'un fichier séquentiel Private Sub CMDLireLigne_Click() Dim L As String txtFile.Text = "" ' Détermine un numéro de fichier valide num = FreeFile ' Ouverture du fichier "Fich_1.txt" sous e: en lecture Open "e:\Fich_1.txt" For Input As #num ' Affectation de tout le contenu du fichier dans la propriété Text du contrôle Txtfile Do While Not EOF(num) Line Input #num, L Txtfile.Text = Txtfile.Text &chr(13)&chr(10)& L Loop Close #1 ' Fermeture du fichier End Sub • L'événement Click sur le bouton de commande nommé CMDLireLignede la feuille exécutera le code suivant: Cours VB – ISG 2007/2008

  13. II.2 Écriture dans un fichier séquentiel Le processus de base pour écrire dans un fichier texte est le suivant: 1-Ouvrir le fichier avec l'instruction Open en utilisant le paramètre Output ou Append 2- Ecrire les données dans le fichier en utilisant les instructions: • Print #num, L Ecrit une série de valeurs existant dans la chaîne de caractère L. Si on appelle print plusieurs fois alors: • si l'instruction se termine par une virgule les données sont séparées par un caractère de tabulation; • si l'instruction se termine par un point-virgule les données ne sont pas séparées; • sinon (aucune ponctuation) les données sont séparées par un CR-LF. Cours VB – ISG 2007/2008

  14. II.2 Écriture dans un fichier séquentiel • Write #num, L Ecrit une série de valeurs existant dans la chaîne de caractère L et les entoure par des guillemets. Si on appelle write plusieurs fois alors: • Si l'instruction se termine par un point-virgule ou virgule les données sont séparées par des virgules; • Sinon (aucune ponctuation) les données sont séparées par un CR-LF. 3-Fermer le fichier Cours VB – ISG 2007/2008

  15. Exemple 2 : Copie d’un fichier Exercice : Ecrire le code qui permet de lire un fichier nommé Fich_1.txt, ligne par ligne, et d’ajouter son contenu dans un second fichier déjà existant nommé Fich_2.txt et d’afficher le fichier résultat. Cours VB – ISG 2007/2008

  16. Travail à faire • Écrire un programme qui donne le même résultat que la commande Input [#]NumFich, A, B, C, … mais en utilisant la commande Line input et les opérations nécessaires sur les chaînes de caractères Cours VB – ISG 2007/2008

  17. III. Accès direct • For Random • For Binary Cours VB – ISG 2007/2008

  18. III.1 For Random • Un fichier à accès direct est un fichier comprenant un enregistrement défini par un type personnalisé. • Ce type particulier est utilisé pour lire et écrire des enregistrements. • C'est le type de fichiers le plus utilisé pour gérer de grandes quantités de données. • On peut les ouvrir en lecture écriture à l’aide de l’instruction Open. • Ils sont par conséquent en mode Random. • Il faut aussi préciser la taille de l'enregistrement. • On ouvre un fichier à accès direct de la manière suivante: Open nom_fichier For Random As [#]NumFich Len=Len(VarEnreg) Où VarEnreg est la variable d'enregistrement Cours VB – ISG 2007/2008

  19. Lecture et écriture des fichiers d’accès direct • Les instruction Get et Put permettent respectivement la lecture et l’écriture dans ce type de fichiers. • Get [#] NumFich, [num_enreg], var_enreg ' Lit l’enregistrement à la position num_enreg (ou à la position courante si ce paramètre n’apparaît pas) du fichier numéro numfich et le place dans la variable var_enreg • Put [#] NumFich, [num_enreg], var_enreg ' Ecrit le contenu de la variable var_enreg à la position num_enreg (ou à la position courante si ce paramètre n’apparaît pas) dans le fichier numéro numfich. • On peut accéder directement à un enregistrement en lecture écriture en utilisant l’instruction Seek. Syntaxe: Seek [#] NumFich, num_enreg ' positionne le pointeur dans le fichier numéro numfich à l’enregistrement num_enreg Cours VB – ISG 2007/2008

  20. Exemple 3: fichiers directs en mode Random Private Type ADR 'Définition d'un type personnalisé Nom As String * 30 Ville As String * 20 End Type Sub MAIN() Dim Enr As ADR 'Ouverture du fichier en accès direct Open "C:\Gestion.TXT" For Random As 1 Len = Len(Enr) 'Ecriture dans le fichier de 2 enregistrements Enr.Nom = "Mohamed" Enr.Ville = "Tunis" Put 1, 1, Enr 'Ecriture du 1ier enregistrement Enr.Nom = "Sarra" Enr.Ville = "Bizerte" Put 1, 2, Enr 'Ecriture du 2ème enregistrement Get 1, 1, Enr 'lecture du 1ier enregistrement MsgBox Enr.Nom & " " & Enr.Ville 'Visualisation des champs Get 1, 2, Enr 'lecture du 2ième enregistrement MsgBox Enr.Nom & " " & Enr.Ville 'Visualisation des champs Close 1 End Sub Cours VB – ISG 2007/2008

  21. III.2 For binary • L’ouverture par for binary est appropriée si le fichier n’a pas de structure propre. Ce mode est utile lorsque les autres types (séquentiel, random) ne conviennent pas au problème traité. • Si le fichier est ouvert en binary on a alors un accès direct se basant sur le nombre d’octets précisé • Ouverture en lecture écriture : Open nom_fichier For Binary As #NumFich • Lecture : Get [#]NumFich, [posdebut] , BinVar Remarques • Posdebut: La position par où commence la lecture • les commandes de lecture séquentielles (line input, Input) sont aussi possibles • L'écriture dans un fichier binaire Put [#]NumFich, [posdebut] , BinVar Cours VB – ISG 2007/2008

  22. III.2 For binary • Positionnement Seek [#]NumFich, Pos • Si le fichier contient des enregistrement et qu’on a utilisé la commande open for binary pour l’ouvrir, cette commande permet le positionnement comme suit: • Seek #NumFich, 1 : le premier • Seek #NumFich, Len(Enr) : le second • Seek #NumFich, Len(Enr)*2 : le troisieme • … • Si le fichier est un fichier texte le seek précise le nombre d’octets qu’il doit ignorer avant de commencer la lecture Cours VB – ISG 2007/2008

  23. III.2 For binary • Le nombre d'octets lus et écrits dépend du type de données de la variable de lecture nommée (dans cet exemple) BinVar. • En général, on utilise des variables de type chaînes de caractères comme l'indique l'exemple suivant: Private Sub CMDBinaire_Click() 'On définit une variable qui sert à récupérer les données du fichier Dim BinVar As String * 10 'On ouvre le fichier en mode binaire, Open "e:\Fich_1.txt" For Binary As #1 Get 1, , BinVar 'On affiche le résultat dans la zone text1 Text1.Text = BinVar 'On ferme le fichier Close 1 End Sub Private Sub CMDBinaire_Click() 'On définit une variable qui sert à récupérer les données du fichier Dim BinVar As String 'On ouvre le fichier en mode binaire, Open "e:\Fich_1.txt" For Binary As #1 'On récupère les 100 premiers caractères BinVar = Space$(100) Get 1, , BinVar 'On affiche le résultat dans la zone text1 Text1.Text = BinVar 'On ferme le fichier Close 1 End Sub Cours VB – ISG 2007/2008

  24. Remarques Générales • Dans les modes Binary, Input et Random, on n’est pas obligé de fermer un fichier avant de l'ouvrir sous un autre numéro de fichier. • Dans les modes Append et Output, on doit fermer un fichier avant de l'ouvrir avec un autre numéro de fichier. • Si on ouvre un fichier texte en direct par for random alors les commandes de lecture séquentielles (input, line input, …) ne sont plus possibles Cours VB – ISG 2007/2008

  25. Les commandes manipulant les fichiers Cours VB – ISG 2007/2008

  26. Exercice Écrire le code des deux boutons de commande. Cours VB – ISG 2007/2008

More Related