Mettez simplement un fichier est un séquence binaire d'un certain type. Dans Delphes, il existe trois classes de fichier: 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 un CR / LF (#13#10) combinaison, 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 tapé dans Delphi, nous utilisons ce qui suit syntaxe:
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 longue chaîne, 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 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 les éléments suivants code:
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 ordonné numériquement 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 faire 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. Courriel: = NewEMail;
{lire passe à l'enregistrement suivant, nous devons
revenir à l'enregistrement d'origine, puis écrire}
Recherche (F, RecN);
Écrire (F, DummyMember);
{Fermer le fichier}fin;
Fin de la tâche
Voilà, 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 modifier certaines des données (e-mail, par exemple) au "milieu" du fichier.
L'important est que ce fichier ne soit pas un Fichier ASCII, voici à quoi ça ressemble Bloc-notes (un seul enregistrement):
.Delphi Guide g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..