Dela via


Två sätt att skapa ett CArchive-objekt

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:

  1. Visar dialogrutan Spara som och hämtar filnamnet från användaren.

  2. Öppnar filen namngiven av användaren som ett CFile-objekt.

  3. Skapar ett CArchive objekt som pekar på det här CFile objektet. Vid skapande av CArchive objektet ställer ramverket in läget till "store" (skriv, serialisera) i stället för "load" (läsa, deserialisera).

  4. Anropar funktionen Serialize som definierats i klassen CDocument-derived och skickar den en referens till objektet CArchive .

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

  1. Konstruera ett CFile objekt eller ett objekt som härletts från CFile.

  2. CFile Skicka objektet till konstruktorn för CArchive, 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 CArchive konstruktorn ä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. Funktionen Serialize för ett objekt kontrollerar det här tillståndet genom att anropa IsStoring funktionen 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

  1. I följande exempel visas hur du stänger objektet CArchive :

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

Se även

Serialisering: Serialisera ett objekt