Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det finns två sätt att skapa ett CArchive objekt:
Implicit skapande av ett CArchive-objekt via ramverket
Det vanligaste och enklaste sättet är att låta ramverket skapa ett CArchive objekt för dokumentet för kommandona Spara, Spara som och Öppna på Arkiv-menyn.
Det här är vad ramverket gör när användaren av ditt program utfärdar kommandot Spara som på arkiv-menyn:
Visar dialogrutan Spara som och hämtar filnamnet från användaren.
Öppnar filen namngiven av användaren som ett
CFile-objekt.Skapar ett
CArchiveobjekt som pekar på det härCFileobjektet. Vid skapande avCArchiveobjektet ställer ramverket in läget till "store" (skriv, serialisera) i stället för "load" (läsa, deserialisera).Anropar funktionen
Serializesom definierats i klassenCDocument-derived och skickar den en referens till objektetCArchive.
Dokumentets Serialize funktion skriver sedan data till CArchive objektet, som snart kommer att förklaras. När du kommer tillbaka från funktionen Serialize förstör ramverket CArchive objektet och sedan objektet CFile .
Om du låter ramverket CArchive skapa objektet för dokumentet behöver du alltså bara implementera dokumentets Serialize funktion som skriver och läser till och från arkivet. Du måste också implementera Serialize för alla CObject-härledda objekt som dokumentets Serialize funktion i sin tur serialiserar direkt eller indirekt.
Det explicit skapande av ett CArchive-objekt
Förutom att serialisera ett dokument via ramverket finns det andra tillfällen då du kan behöva ett CArchive objekt. Du kanske till exempel vill serialisera data till och från Urklipp, som representeras av ett CSharedFile objekt. Eller så kanske du vill använda ett användargränssnitt för att spara en fil som skiljer sig från den som erbjuds av ramverket. I det här fallet kan du uttryckligen skapa ett CArchive objekt. Du gör detta på samma sätt som ramverket gör med hjälp av följande procedur.
Så här skapar du uttryckligen ett CArchive-objekt
Konstruera ett
CFileobjekt eller ett objekt som härletts frånCFile.CFileSkicka objektet till konstruktorn förCArchive, enligt följande exempel:CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);Det andra argumentet till
CArchivekonstruktorn är ett uppräknat värde som anger om arkivet ska användas för att lagra eller läsa in data till eller från filen. FunktionenSerializeför ett objekt kontrollerar det här tillståndet genom att anropaIsStoringfunktionen för arkivobjektet.
När du är klar med att lagra eller läsa in data till eller från CArchive objektet stänger du det.
CArchive Även om (och CFile) objekten automatiskt stänger arkivet (och filen), är det bra att uttryckligen göra det eftersom det gör det enklare att återställa från fel. Mer information om felhantering finns i artikeln Undantag: Fånga och ta bort undantag.
Stänga CArchive-objektet
I följande exempel visas hur du stänger objektet
CArchive:archive.Close(); theFile.Close();