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:
Zeigt das Dialogfeld "Speichern unter " an und ruft den Dateinamen des Benutzers ab.
Öffnet die vom Benutzer benannte Datei als
CFile
Objekt.Erstellt ein
CArchive
Objekt, das auf diesesCFile
Objekt verweist. Beim Erstellen desCArchive
Objekts legt das Framework den Modus auf "Store" (Schreiben, Serialisieren) und nicht auf "Laden" (Lesen, Deserialisieren) fest.Ruft die
Serialize
in derCDocument
abgeleiteten Klasse definierte Funktion auf, und übergibt sie einen Verweis auf dasCArchive
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 CObject
abgeleiteten 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
Erstellen eines
CFile
Objekts oder eines Objekts, das vonCFile
.Übergeben Sie das
CFile
Objekt an den KonstruktorCArchive
, 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. DieSerialize
Funktion eines Objekts überprüft diesen Zustand durch Aufrufen derIsStoring
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
Im folgenden Beispiel wird veranschaulicht, wie das
CArchive
Objekt geschlossen wird:archive.Close(); theFile.Close();