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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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