2010-06-09 4 views
0

Voici un exemple de code:En utilisant le même objet CArchive pour archiver et désarchiver

CFile serFile; 
serFile.Open(_T("Person.ser"), CFile::modeCreate | CFile::modeWrite); 

CArchive writer(&serFile, CArchive::store); 

me.Serialize(writer); 

writer.Close(); 
serFile.Close(); 

serFile.Open(_T("Person.ser"), CFile::modeRead); 

CArchive reader(&serFile, CArchive::load); 
CPerson clone; 
clone.Serialize(reader); 

reader.Close(); 
serFile.Close(); 

Ici, j'ai un writer qui archive l'objet me. Ensuite, j'utilise un autre objet reader pour le désarchiver. Est-il possible de re-construire ou de définir une propriété de writer pour le rendre, le lecteur au lieu de déclarer un autre CArchive objet reader?

Merci.

+0

DId vous vérifiez si vous pouvez éditer cette propriété CArchive :: load); après la création du lecteur. Je veux dire qu'après la création de l'objet, vous n'avez pas de settype ou de setattribute une fonction qui vous permettrait de le changer. – ckv

+0

'CArchive :: load' est un' enum' que nous utilisons lors de la construction d'un objet 'CArchive'. 'enum Mode {magasin = 0, charge = 1, bNoFlushOnDelete = 2, bNoByteSwap = 4};' – bdhar

Répondre

0

Je suppose qu'un pointeur CArchive * cReadAndWrite peut être utilisé et vous pouvez le supprimer et le réutiliser. Mais je ne suis pas sûr de cette faisabilité.

Questions connexes