hou$$am Fondateur
Nombre de messages : 386 Localisation : Tlemcen-Algeria Date d'inscription : 04/01/2007
| Sujet: X : Manipulation de fichiers Mar 16 Jan - 4:59 | |
| 1. Déclaration
Pour utiliser un ou des fichiers tout au long d'un programme, il faudra l'identifier par une variable dont le type est fonction de l'utilisation que l'on veut faire du fichier. Il existe trois types de fichiers :
* Les fichiers textes (Text), qui sont écrits au format texte (chaînes de cractères, nombres) dans lesquels ont peut écrire et lire ligne par ligne ou à la file avec les procédures Write(Ln) et Read(Ln). Chaque fin de ligne du fichier se termine par les caractères 10 et 13 de la table ASCII qui signifient respectivement retour chariot et passage à la ligne. Ces deux derniers caractères sont transparent au programmeur. On pourra donc y écrire ou y lire indifférament des chaînes ou des nombres, cela dépend du type que l'on affecte à la variable passée en paramètre aux procédures d'entrée/sorties (voir plus bas). Note : S'il y a lieu de faire une convertion nombre/chaîne, le compilateur le fait tout seul, par contre si le type de la variable ne correspond pas avec la donnée lue dans le fichier et qu'aucune convertion n'est possible (exemple : WriteLn(f, x:Real); alors que le fichier ne contient que des lettres), alors cela produit une erreur. Syntaxe : - Code:
-
Var f : Text ; * Les fichiers typés (File Of), qui sont des fichiers écrits sur disque telles que les données se présentent en mémoire. C'est-à-dire que la taille du fichier résultera directement et exactement de la taille en mémoire qu'occupe telle ou telle variable. Cela accrue la vitesse d'accès aux données du fichiers. Mais le plus grand avantage c'est que l'on obtient ainsi des fichiers parfaitement formatés, c'est-à-dire qu'on peut y lire et écrire directement des variables de type structuré qui contiennent plusieurs champs de données ( voir chap Type) sans avoir à se soucier des divers champs qu'elles contiennent. Il va sans dire que ce type de fichier est préférable à tous les autres. Syntaxe :
- Code:
-
Var f : File Of type ; Exemple : Var f : File Of Integer ; * Les fichiers tout court ! (File), qui sont des fichiers dont on ne connait pas le contenu. N'ayant aucune information sur la structure des données, n'ayant aucune convertion à faire, la lecture et son écriture en sont plus rapide. Mais sont utilité est bien maigre : à part faire une simple copie d'un fichier dans un autre... Syntaxe :
- Code:
-
Var f : File ; 2. Lecture, écriture
Avant de travailler sur un fichier, il faut le déclarer en lui affectant une variable qui servira à désigner le fichier tout au long du programme. Assign s'applique à tous les types de fichiers (Text, File Of et File). Syntaxe :
- Code:
-
Assign ( variable d'appel , nom du fichier ) ; Ensuite, il faut renvoyer le pointeur au début du fichier pour pouvoir lire (Text, File Of et File) ou écrire (File Of et File) à partir du début du fichier. Attention, on ne peut pas écrire sur un Text avec Reset ! Syntaxe : - Code:
-
Reset ( variable d'appel ) ; Il est possible pour le type File uniquement, de spécifier la taille de chaque bloc de donnée lu ou écrit sur le fichier, en rajoutant en argument à Reset une variable (ou un nombre directement) de type Word (entier) spécifiant cette taille en octet. Cela nécessite de connaître la taille mémoire de chaque type de variables (voir chap IV "Différents types de variables"). Par exemple cette taille vaudra 6 si on veut lire des nombres réels (Real) ou bien 256 pour des chaînes de caractères (String). Le fait que la variable taille soit de type Word implique que sa valeur doit être comprise entre 0 et 65535. Par défaut, taille=128 octets. Syntaxe :
- Code:
-
Reset ( variable d'appel, taille ) ; Pour créer un fichier qui n'existe pas ou bien pour en effacer sont contenu, on emploi ReWrite qui pemret d'effectuer des lectures (File Of et File) et écritures (Text, File Of et File). Attention, on ne peut pas lire sur un Text avec ReWrite ! Syntaxe : - Code:
-
Rewrite ( variable d'appel ) ; Tout comme Reset, ReWrite permet de spécifier une taille aux échanges de données sur un File seulement (aussi bien en écriture qu'en lecture). Avec ReWrite c'est le cas ou le fichier n'existe pas encore alors qu'avec Reset c'est le cas ou il existe déjà. Syntaxe : - Code:
-
Rewrite ( variable d'appel, taille) ; Pour lire le contenu d'une ligne d'un fichier Text ouvert, on utilise la même instruction qui permet de lire la valeur d'une variable au clavier à savoir ReadLn. Sera alors lue, la ou les variable(s) correspondant au contenu de la ligne courante (celle pointée par le pointeur). Si la ou les variable(s) n'étai(en)t pas de taille suffisament grande pour contenir toutes les données de la ligne, alors l'exédent serait perdu. Syntaxes : - Code:
-
ReadLn ( variable d'appel, variable ) ; ReadLn ( variable d'appel, var1, var2, ... varN) ; Pour écrire sur un fichier Text, il suffit d'employer la commande WriteLn.
Syntaxes : - Code:
-
WriteLn ( variable d'appel, variable ) ; WriteLn ( variable d'appel, var1, var2, ... varN) ; Les procédures Read et Write s'utilisent respectivement de la même manière que ReadLn et WriteLn mais s'appliquent aux File Of aussi bien qu'aux Text.
Pour lire et écrire sur un File, il faut utiliser les procédures BlockRead et BlockWrite. Syntaxes : - Code:
-
BlockRead ( f, variable, nbr ) ; BlockRead ( f, variable, nbr, result ) ; BlockWrite ( f, variable, nbr ) ; BlockWrite ( f, variable, nbr, result ) ; BlockRead lit sur le fichier f de type File une variable qui contiendra un nombre de bloc mémoire (dont la taille est définie par Reset ou ReWrite) égale à nbr. La variable facultative result prend pour valeur le nombre de bloc effectivement lu (car il peut y en avoir moins que prévu initialement).
BlockWrite écrit sur le fichier f de type File une variable sur un nombre de bloc mémoire égale à nbr. La variable facultative result prend pour valeur le nombre de bloc effectivement écrit (car il peut y en avoir plus à écrire que ne le permet l'initialisation par Reset ou ReWrite). Dans le cas ou cette variable result est ommise et qu'il est impossible d'écrire autant de blocs que voulu, il est généré une erreur !
Note : Les variables nbr et result doivent être de type Word.
Il est impératif de fermer les fichiers ouverts pendant un programme Turbo Pascal avant de terminer le programme sous peine de voir les données inscrites en son sein perdues. Syntaxe : - Code:
-
Close ( variable d'appel ) ; Il est possible de rappeler un fichier Text en cours de programme même s'il a déjà été refermé grâce à sa variable d'appel. Et alors la position courante du curseur sera à la fin du fichier. Ne fonctionne qu'en écriture et qu'avec un Text. Syntaxe :
- Code:
-
Append ( variable d'appel ) ; La syntaxe Append est équivalente au bloc suivant : - Code:
-
Begin Reset(variable d'appel) ; Seek(variable d'appel, FileSize(variable d'appel)) ; End ; - Code:
-
Program exemple12 ; Uses crt, dos ; Var f : text ; nom : string ; choix : char ; Procedure lecture ; Begin Append (f) ; Reset (f) ; Readln (f, nom) ; Writeln (nom) ; End ; BEGIN Clrscr ; Assign (f, 'init.txt') ; Rewrite (f) ; Write ('Entrez un nom d''utilisateur : ') ; Readln (nom) ; nom := 'Dernier utilisateur : ' + nom ; Writeln (f, nom) ; Close (f) ; Write ('Voulez-vous lire le fichier init.txt ? [O/N] ') ; Readln (choix) ; If (choix='O') or (choix='o') then lecture ; END. Ce programme exemple12 illustre les principales commandes qui permettent de travailler sur des fichiers de type texte. Ici, le programme réinitialise à chaque lancement le fichier init.txt et y inscrit une valeur entrée par l'utilisateur (son nom, en l'occurrence). Il permet également à l'utilisateur de lire le contenu du fichier (qui ne contient qu'une seule ligne de texte). | |
|
fcboumi13
Nombre de messages : 6 Localisation : Tlemcen-Algerie Date d'inscription : 28/01/2007
| Sujet: Re: X : Manipulation de fichiers Sam 3 Fév - 11:11 | |
| | |
|
Admin Fondateur
Nombre de messages : 197 Age : 40 Localisation : Tlemcen ( Algérie ) Date d'inscription : 04/12/2006
| Sujet: Re: X : Manipulation de fichiers Lun 10 Sep - 10:23 | |
| Thank's Hou$$am ces tres important la manipulation des fichiers | |
|
sofian
Nombre de messages : 2 Date d'inscription : 20/05/2008
| Sujet: Re: X : Manipulation de fichiers Sam 24 Mai - 2:52 | |
| | |
|
Contenu sponsorisé
| Sujet: Re: X : Manipulation de fichiers | |
| |
|