Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Fichier texte

Présentation

Un fichier texte est généralement un fichier portant l'extension *.txt.
Son utilisation est très diversifiés. Il peut être une source d'informations ou il peut être également utiliser comme sauvegarde de données par un programme.
Pour accéder à un fichier, il faut tout d'abord l'ouvrir et ensuite après l'avoir manipuler, il faut le refermer.



Utilisation d'un fichier texte

Pour travailler avec un fichier texte, il faut déclarer une variable du type TextFile et ensuite associer le chemin du fichier à cette variable.
On effectue cette association grâce à la procédure AssignFile.

Pour le tutorial, notre fichier texte se nommera "test.txt".


Var F: TextFile;
begin
AssignFile(F,'c:\test.txt'); //Associe la variable F au fichier texte

Dans notre exemple d'association (ci-dessus), le fichier "test.txt" se trouve sur le disque "c:\", il serait plus judicieux de le mettre dans le répertoire de travail de l'exécutable.

Var F: TextFile;
begin
AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
//Associe la variable F au fichier texte


ExtractFilePath(Application.ExeName)+'test.txt'


"Application.ExeName" contient le nom du fichier de l'exécutable de l'application, y compris le chemin d'accès.
Avec la fonction "ExtractFilePath", on ne garde que le chemin d'accès puis on ajoute le nom notre fichier texte "test.txt".

Pour, nos exemples, voici le contenu du fichier texte "test.txt" :


voici la premiere ligne
voici la deuxieme ligne
voici la troisieme ligne



Lire la première ligne d'un fichier texte

Après avoir associer une variable avec AssignFile, on peut alors manipuler cette variable.
Pour commencer, il faut ouvrir cette variable grâce à la procédure Reset.
Cette permet d'ouvrir le fichier sans modifier le contenu.

Reset(F); //Ouvre le fichier sans le modifier

Ensuite, on va lire la première ligne du fichier grâce à la procédure ReadLn.
Elle permet de lir une ligne du fichier texte jusqu'au prochain saut de ligne.

Var Stg :string;
begin

Readln(F,Stg); //Lit une ligne du fichier texte jusqu'au prochain saut de ligne

La variable Stg de type string permet de sauvegarder la première ligne du contenu de la variable F.
On va utilise ici Edit2 (composant TEdit) pour visualiser la première ligne.

Edit2.Text:=Stg; //Affiche dans Edit2 le contenu de la variable Stg

Après avoir manipuler un fichier texte, il faut fermer l'association avec la procédure CloseFile.

CloseFile(F); //Ferme l'association entre la variable F et le fichier texte

Voici l'exemple complet de la lecture de la première ligne d'un fichier texte :

procedure TForm1.Button2Click(Sender: TObject);
Var F: TextFile;
Stg:String;
begin
//Lire la premiere ligne AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
Reset(F); //Ouvre le fichier sans le modifier
Readln(F,Stg);
//Lit une ligne du fichier texte jusqu'au prochain saut de ligne
Edit2.Text:=Stg; //Affiche dans Edit2 le contenu de la variable Stg
CloseFile(F); //Ferme l'association entre la variable F et le fichier texte
end;



Lire la deuxième ligne d'un fichier texte

Pour lire la deuxième ligne, il suffit de modifier l'étape avec la procédure Readln.
Il faut tout simplement ajouter Readln(F) :

Readln(F); //Met la position en cours du fichier au début de la ligne suivante
Readln(F,Stg); //Lit la ligne en cours, c'est à dire la deuxième ligne


Si vous voulez lire la troisieme ligne alors il faut mettre deux fois Readln(F) puis Readln(F,Stg).
Voici l'exemple complet pour lire la deuxième ligne d'un fichier texte :

procedure TForm1.Button3Click(Sender: TObject);
Var F: TextFile;
Stg:String;
begin
//Lire la deuxième ligne AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
Reset(F);
Readln(F,Stg); //Lit une ligne du fichier texte jusqu'au prochain saut de ligne
Readln(F,Stg); //Lit la ligne suivante
{si vous voulez lire la troisieme ligne alors il faut mettre trois fois Readln(F,Stg)}
Edit3.Text:=Stg; //Affiche dans Edit3 le contenu de la variable Stg
CloseFile(F);
end;


On utilise Edit3 (composant TEdit) pour afficher le contenu de la variable Stg.


Lire le contenu d'un fichier texte

Pour lire le contenu d'un fichier texte, il faut alors avoir recours à une boucle.


repeat //Repeter...
Readln(F,Stg); //Lit une ligne du fichier texte jusqu'au prochain sut de ligne
Memo1.Lines.Add(Stg); //Affiche dans Memo1 le contenu de la variable
Stg

until EOF(F);// ...jusqu'à ce que la position en cours du pointeur se trouve en fin de fichier


La fonction EOF détermine si la position en cours du pointeur se trouve en fin de fichier.
On utilise Memo1 (composant TMemo) pour afficher le contenu de la variable Stg.

Voici l'exemple complet pour lire le contenu d'un fichier texte :


procedure TForm1.Button4Click(Sender: TObject);
Var F: TextFile;
Stg:String;
begin
//Lire le contenu du fichier
Memo1.Clear; //Efface le contenu de Memo1
AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
Reset(F);
repeat //Repeter...
Readln(F,Stg); //Lit une ligne du fichier texte jusqu'au prochain sut de ligne
Memo1.Lines.Add(Stg); //Affiche dans Memo1 le contenu de la variable
Stg

until EOF(F);// ...jusqu'à ce que la position en cours du pointeur se trouve en fin de fichier
CloseFile(F);
end;


Lire le contenu d'un fichier texte si le fichier existe

Cette opération permet d'éviter un message d'erreur et de ne pas essayer de le manipuler si le fichier n'existe pas.
On garde le même code source que précèdemment, on va juste ajouter quelques lignes.

On va jouer sur la vérification d'entrées et de sorties.
Avec {$I-}, on va désactivé la vérifiaction d'E/S puis on va la réactivé avec {$I+}.
Ensuite avec la fonction IoResult, on renvoit l'état de la dernière opération d'E/S.
Si cette fonction est égale à 0 alors, le fichier existe autrement il y a un problème.

Voici l'exemple complet de lecture :

procedure TForm1.Button5Click(Sender: TObject);
Var F: TextFile;
Stg:String;
begin
//Lire le fichier si il existe avec {$I-} et {$I+}
AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
{$I-} //La vérification d'E/S est désactivée
Reset(F);
{$I+} //La vérification d'E/S est activée
if IoResult=0 then //Renvoie l'état de la dernière opération d'E/S
begin
repeat
Readln(F,Stg);
Memo2.Lines.Add(Stg);
//Affiche dans Memo2 le contenu de la variable Stg
until Eof(F);
CloseFile(F);
end;
end;


On utilise Memo2 (composant TMemo) pour afficher le contenu de la variable Stg.



Ecriture d'un fichier texte

Pour l'écriture d'un fichier, on ne va plus utiliser les procédures Reset ou Readln mais les procédures Rewrite, Append et Writeln.


Effacer le fichier et écrire

La procédure Rewrite permet de créer (efface le contenu si le fichier existe déjà) puis d'ouvrir le fichier.
La procédure Writeln va être utiliser pour écrire la ligne.
On utilise Edit1 (composant TEdit) pour insérer le texte.

Voici l'exemple complet pour effacer le fichier texte et en suite écrire dedans :


procedure TForm1.Button1Click(Sender: TObject);
Var F: TextFile;
Stg:String;
begin
//Effacer le fichier et ecrire
Stg:=Edit1.Text; //Recupere dans la variable Stg le contenu de Edit1
AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
Rewrite(F); //Crée puis ouvre un nouveau fichier
Writeln(F,Stg); //Writeln place une marque en fin de ligne
CloseFile(F);
end;



Insérer une ligne à la fin du fichier texte

Au lieu, d'utiliser la procédure Rewrite, on va utiliser la procédure Append.
Elle permet de préparer le fichier existant pour l'ajout de texte.
On utilise Edit4 (composant TEdit) pour insérer le texte qui sera ajouter à la fin du fichier texte.

Voici l'exemple complet pour insérer une ligne à la fin du fichier texte :


procedure TForm1.Button6Click(Sender: TObject);
Var F: TextFile;
Stg:String;
begin
//Insérer une ligne a la fin du fichier texte
Stg:=Edit4.Text; //Recupere dans la variable Stg le contenu de Edit4
AssignFile(F,ExtractFilePath(Application.ExeName)+'test.txt');
Append(F); //Prépare un fichier existant pour l'ajout de texte
Writeln(F,Stg); //Writeln écrit une marque fin de ligne
CloseFile(F);
end;


Manipulations d'un fichier texte    [ 15-06-2002 ]
 Exemples regroupant des manipulations de lecture et d'écriture d'un fichier texte.
Télécharger :  [7 Ko] [Télécharger fichtexte.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/
 

Tous droits réservés - Contacts
Haut de la page