Créer une base de données à l'aide du fichier Delphi de fichiers typés

Mettez simplement un fichier est une séquence binaire d'un certain type. Dans Delphi, il existe trois classes de fichiers: dactylographié, texte et non typé. Les fichiers typés sont des fichiers qui contiennent des données d'un type particulier, comme Double, Entier ou Type d'enregistrement personnalisé précédemment défini. Les fichiers texte contiennent des caractères ASCII lisibles. Les fichiers non typés sont utilisés lorsque nous voulons imposer la structure la moins possible à un fichier.

Fichiers dactylographiés

Alors que les fichiers texte se composent de lignes terminées par une combinaison CR / LF (# 13 # 10), les fichiers dactylographiés sont constitués de données provenant d'un type particulier de structure de données.

Par exemple, la déclaration suivante crée un type d'enregistrement appelé TMember et un tableau de variables d'enregistrement TMember.

 type

   TMember = record

     Nom : chaîne[50];

    email :
chaîne[30];

    Messages: LongInt;
  
fin;

 
var Membres : tableau[1… 50] de TMember; 

Avant de pouvoir écrire les informations sur le disque, nous devons déclarer une variable d'un type de fichier. La ligne de code suivante déclare une variable de fichier F.

 var F : fichier de TMember; 

Remarque: Pour créer un fichier typé dans Delphi, nous utilisons la syntaxe suivante:

var SomeTypedFile: fichier de SomeType

Le type de base (SomeType) d'un fichier peut être un type scalaire (comme Double), un type de tableau ou un type d'enregistrement. Il ne doit pas s'agir d'une chaîne longue, d'un tableau dynamique, d'une classe, d'un objet ou d'un pointeur.

Pour commencer à travailler avec des fichiers de Delphi, nous devons lier un fichier sur un disque à une variable de fichier dans notre programme. Pour créer ce lien, nous devons utiliser AssignFile procédure pour associer un fichier sur un disque à une variable de fichier.

 AssignFile (F, 'Members.dat') 

Une fois l'association avec un fichier externe établie, la variable de fichier F doit être «ouverte» pour la préparer à la lecture et à l'écriture. Nous appelons la procédure de réinitialisation pour ouvrir un fichier existant ou la réécriture pour créer un nouveau fichier. Lorsqu'un programme termine le traitement d'un fichier, le fichier doit être fermé à l'aide de la procédure CloseFile. Après la fermeture d'un fichier, son fichier externe associé est mis à jour. La variable de fichier peut ensuite être associée à un autre fichier externe.

En général, nous devons toujours utiliser la gestion des exceptions; de nombreuses erreurs peuvent survenir lors de l'utilisation de fichiers. Par exemple: si nous appelons CloseFile pour un fichier déjà fermé, Delphi signale une erreur d'E / S. D'un autre côté, si nous essayons de fermer un fichier mais que nous n'avons pas encore appelé AssignFile, les résultats sont imprévisibles.

Écrire dans un fichier

Supposons que nous ayons rempli un tableau de membres Delphi avec leurs noms, e-mails et nombre de publications et que nous voulons stocker ces informations dans un fichier sur le disque. Le morceau de code suivant fera le travail:

 var

   F : fichier de TMember;

  i: entier;
commencer

  AssignFile (F, 'members.dat');

  Réécrire (F);

  essayer

   pour j: = 1 à 50 faire

    Écriture (F, membres [j]);

  enfin

   CloseFile (F);

  fin;fin; 

Lire à partir d'un fichier

Pour récupérer toutes les informations du fichier «members.dat», nous utiliserions le code suivant:

 var

   Membre: TMember

   F : fichier de TMember;commencer

  AssignFile (F, 'members.dat');

  Réinitialiser (F);

  essayer

   sans Eof (F) commence

    Lire (F, membre);

    DoSomethingWithMember;

   fin;

 
enfin

   CloseFile (F);

  fin;fin; 

Remarque: Eof est la fonction de vérification EndOfFile. Nous utilisons cette fonction pour nous assurer que nous n'essayons pas de lire au-delà de la fin du fichier (au-delà du dernier enregistrement stocké).

Recherche et positionnement

Les fichiers sont normalement accessibles séquentiellement. Lorsqu'un fichier est lu à l'aide de la procédure standard En lecture ou écrit à l'aide de la procédure standard Écriture, la position actuelle du fichier se déplace vers le composant de fichier numéroté suivant (enregistrement suivant). Les fichiers dactylographiés sont également accessibles de manière aléatoire via la procédure standard Seek, qui déplace la position actuelle du fichier vers un composant spécifié. le FilePos et Taille du fichier les fonctions peuvent être utilisées pour déterminer la position actuelle du fichier et la taille actuelle du fichier.

 retour au début - le premier enregistrement

 Chercher (F, 0);

 

 aller au 5 e record

 Chercher (F, 5);

 

 Aller à la fin - "après" le dernier enregistrement

 Rechercher (F, FileSize (F)); 

Modifier et mettre à jour

Vous venez d'apprendre à écrire et à lire l'ensemble des membres, mais que se passe-t-il si tout ce que vous voulez faire est de rechercher le 10e membre et de modifier l'e-mail? La procédure suivante fait exactement cela:

 procédure Changer l'e-mail(const RecN: entier; const Nouveau courriel : chaîne);var DummyMember: TMember;commencer

  attribuer, ouvrir, bloc de gestion des exceptions

  Recherche (F, RecN);

  Lire (F, DummyMember);

  DummyMember.Email: = NewEMail;

  lire passe à l'enregistrement suivant, nous devons

 revenir à l'enregistrement d'origine, puis écrire
  Recherche (F, RecN);

  Écrire (F, DummyMember);

  Fermer le fichierfin;

Fin de la tâche

C'est tout, vous avez maintenant tout ce dont vous avez besoin pour accomplir votre tâche. Vous pouvez écrire les informations des membres sur le disque, vous pouvez les relire, et vous pouvez même changer certaines des données (e-mail, par exemple) au "milieu" du fichier.

Ce qui est important, c'est que ce fichier n'est pas un fichier ASCII, voici à quoi il ressemble dans le Bloc-notes (un seul enregistrement):

 .Guide Delphi g Ò5 · ¿ì. 5… B V.Lƒ, „¨[email protected]Ï… ç.ç.ï…