Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Il existe deux façons de créer un CArchive objet :
Création implicite d’un objet CArchive via l’infrastructure
Le moyen le plus courant et le plus simple consiste à laisser l’infrastructure créer un CArchive objet pour votre document pour le compte des commandes Enregistrer, Enregistrer sous et Ouvrir dans le menu Fichier.
Voici ce que fait l’infrastructure lorsque l’utilisateur de votre application émet la commande Enregistrer sous dans le menu Fichier :
Présente la boîte de dialogue Enregistrer sous et obtient le nom de fichier de l’utilisateur.
Ouvre le fichier nommé par l’utilisateur en tant qu’objet
CFile.Crée un
CArchiveobjet qui pointe vers cetCFileobjet. Lors de la création de l’objetCArchive, le cadre définit le mode sur « store » (écriture, sérialisation), par opposition à « load » (lecture, désérialisation).Appelle la
Serializefonction définie dans votreCDocumentclasse dérivée, en lui transmettant une référence à l’objetCArchive.
La fonction de Serialize votre document écrit ensuite des données dans l’objet CArchive , comme expliqué sous peu. À l’issue de votre fonction Serialize, le cadre détruit l’objet CArchive, puis l’objet CFile.
Par conséquent, si vous laissez le cadre créer l’objet CArchive pour votre document, il vous suffit d’implémenter la fonction Serialize du document qui lit l’archive et écrit dedans. Vous devez également implémenter Serialize pour tous les objets dérivés de CObject que la fonction de Serialize du document sérialise directement ou indirectement.
Création explicite d’un objet CArchive
Outre la sérialisation d’un document via l’infrastructure, il y a d'autres situations où vous pourriez avoir besoin d’un objet CArchive. Par exemple, vous souhaiterez peut-être sérialiser des données vers et à partir du Presse-papiers, représenté par un objet CSharedFile. Vous pouvez également utiliser une interface utilisateur pour enregistrer un fichier différent de celui proposé par l’infrastructure. Dans ce cas, vous pouvez créer explicitement un CArchive objet. Vous procédez de la même façon que le cadre, à l’aide de la procédure suivante.
Pour créer explicitement un objet CArchive
Construisez un
CFileobjet ou un objet dérivé deCFile.Passez l’objet
CFileau constructeur pourCArchive, comme illustré dans l’exemple suivant :CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);Le deuxième argument du
CArchiveconstructeur est une valeur énumérée qui spécifie si l’archive sera utilisée pour stocker ou charger des données vers ou à partir du fichier. LaSerializefonction d’un objet vérifie cet état en appelant laIsStoringfonction pour l’objet archive.
Une fois que vous avez terminé de stocker ou de charger des données vers ou depuis l’objet CArchive , fermez-le. Bien que les CArchive objets (et CFile) ferment automatiquement l’archive (et le fichier), il est recommandé de le faire explicitement, car il facilite la récupération à partir d’erreurs. Pour plus d’informations sur la gestion des erreurs, consultez l’article Exceptions : Intercepter et supprimer des exceptions.
Pour fermer l’objet CArchive
L’exemple suivant montre comment fermer l’objet
CArchive:archive.Close(); theFile.Close();