Ecrire un objet dans un flux
bonsoir,
je cherche à écrire un objet dans un TFileStream ou un TMemoryStream.
J'utilise donc les methodes write pour écrire et read pour relire.
Voila mon code pour écrire :
Code:
1 2 3 4 5
|
TFileStream *FS = new TFileStream("c:\\test0.dat", fmCreate);
int size = sizeof(MonObjet);
FS->Write(MonObjet, size);
delete FS; |
et pour relire :
Code:
1 2 3 4 5 6
|
TMaClass *MonObjet = new TMaClass;
TFileStream *FS = new TFileStream("c:\\test0.dat", fmOpenRead);
int size = FS->Size;
FS->Read(MonObjet, size);
delete FS; |
ce code se compile et s'execute sans aucun problème, si ce n'est que je ne récupère pas MonObjet dans l'état ou je l'ai enregistré :( Il me manque une grande partie des variables initialement présente dans MonObjet avant la sauvegarde ....
J'ai l'impression que le pb vient de
Code:
1 2
|
int size = sizeof(MonObjet); |
qui ne corresponderait à la taille réelle de mon objet ......
Quelle erreur je fais et comment corriger ça ?
Merci
EDIT : pour info, si je créé une structure avec exactement les même variables que celles contenues dans ma TMaClass, je peux sauvegarder et restaurer cette structure sans aucun problème avec le code ci-dessus