Enregistrement et lecture d'un type record

Soyez le premier à donner votre avis sur cette source.

Vue 6 936 fois - Téléchargée 611 fois

Description

Comment enregistrer(et lire)un type record dans un fichier

Source / Exemple :


//le type:
//les string est les tableaux doivent avoir une longueur précise
type
TMonType=record
  Texte:string[64];
  Numero:integer;
  Vrai:boolean;
end;
var MonTruk:TMonType;

//pour enregistrer ce type
var Fichier:file of TMonType;

AssignFile(Fichier,'test.dat');
rewrite(Fichier);
write(Fichier,MonTruk);
closefile(Fichier);

//pour lire ce type
var Fichier:file of TMonType;

AssignFile(Fichier,'test.dat');
reset(Fichier);
read(Fichier,MonTruk);
closefile(Fichier);

//-------------------------------
//petit plus
//si vous utilisez un tableau de ce type :
MonTruk:array[0..10] of TMonType;
//il faut evidemment faire une boucle pour enregistrer et lire
//pour lire il faudra ajouter
seek(Fichier,Nombre); //nombre étant le numéro de l'enregistrement
//seek permet de ce déplacer dans le fichier
//write ,écrit automatiquement a la fin, mais read li la ou l'on est dans le fichier

Conclusion :


ca peu servir pour enregistrer facilement des options

voir le zip pour l'exemple

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Nono40
Messages postés
1000
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1 -
Heu, Fabiin il ya une petite erreur : Write n'écrit pas à la fin du fichier mais à la position en cours ! Il est tout à fait possible de faire un Seek avant un write pour mettre à jour un enregistrement. Pour ensuite ajouter des enregistrement il faut faire un Seek(FileSize(Fichier)) pour se placer en fin de fichier.
Il faut noter aussi que Read() et Write() déplace la position en cours d'un enregistrement.
Contrairement aux fichiers TextFile, peut importe le mode d'ouverture Reset() ou Rewrite(), le fichier est toujours ouvert en lecture/écriture.
fabiin
Messages postés
338
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
8 décembre 2009
6 -
arf, ok, donc en faite g pas besoin de seek, je croyai ke y'avai ke write ki déplacai la position
cs_j1mb0
Messages postés
13
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
27 juin 2003
-
aussi tu aurais pu procéder de cette manière:

type
TMonType=record
Texte:string[64];
Numero:integer;
Vrai:boolean;
end;
var MonTruk:TMonType;

//pour enregistrer ce type
var Fic:TFileStream;

Fic := TFileStream.Create('c: est.dat', fmOpenWrite or fmCreate);

Fic.WriteBuffer(MonTruk, sizeof(MonTruk));
Fic.Free;

//pour lire ce type
var Fic:TFileStream;

Fic := TFileStream.Create('C: est.dat', fmOpenRead);
Fic.ReadBuffer(MonTruk, sizeof(MonTruk));
Fic.Free;

--------

MonTruk peut etre un tableau ou nimporte quoi qui a une taille fixe.
cs_trent
Messages postés
2
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
28 mars 2004
-
question : comment faire si le Record contient un pointeur qui pointe vers le même type de Record et ainsi de suite ? donc comment retrouver les liens entre ces Record lorsqu'on lis le fichier ?
merci d'avance :)
Smith4400
Messages postés
40
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
20 août 2009
-
merci c tres outils pour moi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.