Zwei Möglichkeiten zur Erstellung eines CArchive-Objekts

Es gibt zwei Möglichkeiten zum Erstellen eines CArchive Objekts:

Implizite Erstellung eines CArchive-Objekts über das Framework

Die am häufigsten verwendete und einfachste Möglichkeit besteht darin, dem Framework das Erstellen eines CArchive Objekts für Ihr Dokument im Namen der Befehle "Speichern", "Speichern unter" und "Öffnen" im Menü "Datei" zu ermöglichen.

Dies geschieht im Framework, wenn der Benutzer Ihrer Anwendung den Befehl "Speichern unter" im Menü "Datei" ausgibt:

  1. Zeigt das Dialogfeld "Speichern unter " an und ruft den Dateinamen des Benutzers ab.

  2. Öffnet die vom Benutzer benannte Datei als CFile Objekt.

  3. Erstellt ein CArchive Objekt, das auf dieses CFile Objekt verweist. Beim Erstellen des CArchive Objekts legt das Framework den Modus auf "Store" (Schreiben, Serialisieren) und nicht auf "Laden" (Lesen, Deserialisieren) fest.

  4. Ruft die Serialize in der CDocumentabgeleiteten Klasse definierte Funktion auf, und übergibt sie einen Verweis auf das CArchive Objekt.

Die Funktion Des Serialize Dokuments schreibt dann Daten in das CArchive Objekt, wie kurz erläutert. Nach der Rückgabe von Ihrer Serialize Funktion zerstört das Framework das CArchive Objekt und dann das CFile Objekt.

Wenn Sie das Framework also das Objekt für Ihr Dokument erstellen CArchive lassen, müssen Sie nur die Funktion des Serialize Dokuments implementieren, die in und aus dem Archiv schreibt und liest. Sie müssen auch für alle CObjectabgeleiteten Objekte implementierenSerialize, die die Funktion des Serialize Dokuments wiederum direkt oder indirekt serialisiert.

Explizite Erstellung eines CArchive-Objekts

Neben der Serialisierung eines Dokuments über das Framework gibt es andere Gelegenheiten, wenn Sie möglicherweise ein CArchive Objekt benötigen. Sie können z. B. Daten in und aus der Zwischenablage serialisieren, dargestellt durch ein CSharedFile Objekt. Oder Sie können eine Benutzeroberfläche zum Speichern einer Datei verwenden, die sich von der vom Framework angebotenen datei unterscheidet. In diesem Fall können Sie explizit ein CArchive Objekt erstellen. Sie tun dies auf die gleiche Weise wie das Framework, indem Sie das folgende Verfahren verwenden.

So erstellen Sie explizit ein CArchive-Objekt

  1. Erstellen eines CFile Objekts oder eines Objekts, das von CFile.

  2. Übergeben Sie das CFile Objekt an den Konstruktor CArchive, wie im folgenden Beispiel gezeigt:

    CFile theFile;
    theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite);
    CArchive archive(&theFile, CArchive::store);
    

    Das zweite Argument für den CArchive Konstruktor ist ein Aufzählungswert, der angibt, ob das Archiv zum Speichern oder Laden von Daten in oder aus der Datei verwendet wird. Die Serialize Funktion eines Objekts überprüft diesen Zustand durch Aufrufen der IsStoring Funktion für das Archivobjekt.

Wenn Sie mit dem Speichern oder Laden von Daten in oder aus dem CArchive Objekt fertig sind, schließen Sie sie. Obwohl die CArchive (und CFile) Objekte das Archiv (und die Datei) automatisch schließen, empfiehlt es sich, dies explizit zu tun, da die Wiederherstellung von Fehlern erleichtert wird. Weitere Informationen zur Fehlerbehandlung finden Sie im Artikel Ausnahmen: Abfangen und Löschen von Ausnahmen.

So schließen Sie das CArchive-Objekt

  1. Im folgenden Beispiel wird veranschaulicht, wie das CArchive Objekt geschlossen wird:

    archive.Close();
    theFile.Close();
    

Siehe auch

Serialisierung: Serialisieren eines Objekts