dans le code :
1 2 3 4 5
|
TFileStream *FS = new TFileStream("c:\\test0.dat", fmCreate);
int size = sizeof(MonObjet);
FS->Write(MonObjet, size);
delete FS; |
je pars de la supposition suivante (établie d'après la suite du code pour lire ), que MonObjet est un pointeur et qu'il est instancié classiquement :
TMaclass * MonObjet = new TMaClasse(....);
dans ce cas la ligne
int size = sizeof(MonObjet);
est équilvalent à
int size = sizeof(TMaclass *);
ce qui est la taille d'un pointeur sur objet et non la taille de l'objet .
dans ce cas il faudrait plutot ecrire :
int size = sizeof(TMaclass);
//-------------------------------------------------
pour la 2ème partie du code,
la ligne:
suppose que ton ficher ne contient qu'un et un seul objet car taille de fichier = taille d'un objet
mais s'il y a plusieurs objets identiques , ça ne marche plus.
Il faudra séparer :
1 2 3
| int fs_size = FS->Size; //taille du fichier
int obj_size = sizeof(TMaClasse); //taille de l'objet
int nb_objects = fs_size/obj_size; //nombre d'objets écrits |
Partager