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.
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];
chaîne[30];
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.
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;
commencer
AssignFile (F, 'members.dat');
Réécrire (F);
essayer
pour j: = 1 à 50 faire
Écriture (F, membres [j]);
enfin
CloseFile (F);
fin;fin;
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é).
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));
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
Recherche (F, RecN);
Écrire (F, DummyMember);
Fermer le fichierfin;
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]Ï… ç.ç.ï…