jeudi 28 décembre 2000

Fichier


FICHIER

Les fichiers sont absolument nécessaires lorsqu'on doit garder certaines informations lorsque le programme est terminé. Il existe de nombreuses routines pour manipuler les fichiers.

Opération sur les fichiers

Copier un fichierFichier

Les fichiers sont absolument nécessaires lorsqu'on doit garder certaines informations lorsque le programme est terminé. Il existe de nombreuses routines pour manipuler les fichiers.

Copier un fichier

Le premier paramètre est le nom du fichier à copier et le deuxième et le nom du fichier copié. Si le dernier paramètre est à false, le fichier sera écrasé s'il existe.
copyfile('c:\test\1.tmp','d:\2.tmp',false);

Renommer un fichier

La fonction RenameFile sert à renommer un fichier. On inscrit l'ancien nom de fichier et ensuite le nouveau nom voulu function
RenameFile('ancien.c','nouveau.c');

La fonction retourne true si l'opération a bien été réalisée. 

Déplacer un fichier

La fonction movefile sert à déplacer un fichier, le premier paramètre est la source, le deuxième est la cible.

movefile('d:\2.tmp','c:\1.tmp');

Effacer un fichier

Cette opération efface le fichier du disque et enlève son entré du disque.

DeleteFile(NomDuFichier);
Cette procédure retourne true si le fichier a été effacé avec succès.
On devrait demander confirmation avant d'effacer le fichier.

Trouver un fichier

Pour trouver un fichier, il existe 3 routines
  • FindFirst
  • FindNext
  • FindClose
FindFirst: recherche la première occurrence du fichier dans le répertoire et les attributs spécifiés.

FindNext: recherche la prochaine occurrence du fichier correspondant à l'appel de Find First.

FindClose: Libère la mémoire allouée par les précédentes routines.
On a avantage à utiliser la routine FileExists avec ces routines afin d'éviter les erreurs si le fichier n'existe pas.

Lorsqu'on trouve le fichier, on peut vérifier les attributs de celui-ci
Constant Value Descrition
faReadOnly $00000001 Lecture seulement
faHidden $00000002 Fichier caché
faSysFile $00000004 Fichier système
faVolumeID $00000008 Numéro de volume
faDirectory $00000010 Répertoire
faArchive $00000020 Archive
faAnyFile $0000003F N'importe quel fichier

Modifier les propriétés d'un fichier

Changer l'attribut d'un fichier, nécessite 3 opérations
  • Lecture
  • Changement
  • Configuration
On utilise la fonction FileGetAttr afin d'obtenir les attributs du fichier
Attr := FileGetAttr(txtNomFic.Text);

On modifie ses attributs en ajoutant ou en diminuant son nombre
AttrsChoisie:=AttrsChoisie+ fahidden;

On affecte les changements attribut au fichier
FileSetAttr(txtNomFic.Text, AttrsChoisie);


Le code source d'un programme permettant de modifier les attributs d'un fichier est disponible ici

Les types de fichiers en entrée/sortie

Lecture Ce type de fichiers comporte du texte tout simplement. L'utilisation d'une variable du type TextFile est nécessaire pour l'emploi d'un fichier texte. Il y a 4 étapes à la manipulation d'un fichier.
var
   Fic:Textfile;                         //1. Déclaration
begin
   AssignFile(Fic,'c:\autoexec.bat');    //2. Assignation
   //ou
   System.Assign(Fic,'c:\autoexec.bat');
                                         //3. Ouverture du fichier 
   reset(Fic);                              //en lecture
   rewrite(Fic);                            //en ecrire
   Append(Fic);                             //en ajout
   CloseFile(Fic);                       //4.fermeture du fichier
   //ou
   System.Close(Fic);
end;

Lecture d'un fichier texte

On utilise la procédure ReadLn pour la lecture d'un fichier texte, elle lie fichier, ligne par ligne.
var
   car:string;
begin
   readln( Fic, car);
end;
Étant donné qu'un fichier n'est pas infini, on doit vérifier s'il n'est pas rendu en fin de fichier.
while not Eof(Fic) do
   readln( Fic, car);
Finalement l'ouverture d'un fichier se ferait ainsi
var
   Fic:textfile;
   car:string;
begin
   AssignFile( Fic, 'c:\autoexec.bat');
   reset(Fic);
   try
     while not Eof(Fic) do
     readln(Fic,car);
   finally
     closefile(Fic);
end;

Écriture

L'écriture dans un fichier texte se fait par l'emploi de la méthode rewrite.
var 
   Fic:textfile;
   car:string;
begin
   assignfile(Fic,car);
   rewrite(Fic);
   Writeln(Fic,'Bienvenue dans le monde fabuleux de Delphi ');   
   Writeln(Fic,'Vous venez d'écrire dans un fichier texte, bravo');
   closefile(fic);
end;

Les fichiers binaires

Nous utiliserons la classe TFileStream pour faciliter la manipulation des fichiers binaires. Cette classe offre de multiples fonctionnalités aux niveaux des entrées-sorties
Création et ouverture de fichier
Valeur Description
fmCreate Ouvre le fichier en écriture, s'il existe
fmOpenRead Ouvre le fichier en lecteur seulement
fmOpenWrite Ouvre le fichier en écriture seulement
fmOpenReadWrite Ouvre le fichier pour le modifier
Nous déclarons une variable de type TFileStream
var
  fs: TFileStream;
Crée une instance(variable) de TFileStream
fs := TFileStream.create('c:\test.txt',fmCreate or fmOpenWrite');
Après ces deux opérations, nous pouvons écrire et lire dans le fichier

Boite de dialogue

Windows fournit plusieurs boîtes de dialogue que n'importe qu'elle programmeur peut aisément incorporer dans ses programmes. Nous allons nous attarder à celles utilisées pour ouvrir et sauvegarder un fichier.

La méthode exécutée

On doit utiliser la méthode exécutée pour utiliser une boîte de dialogue, cette méthode permet de créer et d'afficher la boîte de dialogue
If openDialog1.Execute then

Ouverture d'un fichier

L'ouverture d'un fichier se fait en employant la propriété filename
If openDialog1.Execute then
   Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Ces deux lignes de code affectent le contenu d'un fichier choisi à un mémo
La sauvegarde d'un fichier se ferait par

If saveDialog1.Execute then
  Memo1.Lines.savetoFile(saveDialog1.FileName);

Ces deux lignes de code sauvegardent le contenu du mémo dans un fichier.
Propriété de Topendialog et Tsavedialog
Voici quelques propriétés de ces composants

Title

Donne le titre de la boîte de dialogue opendialog1.Title:='Ouverture';

Filter

Extension de fichier admis pour ouvrir ou sauvegarder un fichier savedialog1.Filter:='Text files (*.txt)|*.TXT|Pascal files (*.pas)|*.PAS';

InitialDir

Change le répertoire courant pour celui spécifié savedialog1.InitialDir:='c:\';
Toutes les propriétés de ces composants peuvent être modifiées en mode création en sélectionnant le composant et en allant dans les propriétés qui nous intéressent dans l'inspecteur d'objet
Code source disponible ici.