Sdílet prostřednictvím


Dva způsoby vytvoření objektu CArchive

Objekt můžete vytvořit CArchive dvěma způsoby:

Implicitní vytvoření objektu CArchive prostřednictvím architektury

Nejběžnějším a nejsnadnějším způsobem je nechat architekturu CArchive vytvořit objekt pro dokument jménem příkazů Uložit, Uložit jako a Otevřít v nabídce Soubor.

Toto je to, co architektura dělá, když uživatel vaší aplikace vydá příkaz Uložit jako z nabídky Soubor:

  1. Zobrazí dialogové okno Uložit jako a získá název souboru od uživatele.

  2. Otevře soubor pojmenovaný uživatelem CFile jako objekt.

  3. CArchive Vytvoří objekt, který odkazuje na tento CFile objekt. Při vytváření objektu CArchive architektura nastaví režim na "store" (zápis, serializace), na rozdíl od "načtení" (čtení, deserializace).

  4. Volá funkci definovanou Serialize ve vaší CDocument-odvozené třídě a předá ji odkaz na CArchive objekt.

Funkce dokumentu Serialize pak zapíše data do objektu CArchive , jak je vysvětleno krátce. Po návratu z vaší Serialize funkce architektura zničí CArchive objekt a pak CFile objekt.

Pokud tedy necháte architekturu CArchive vytvořit objekt pro dokument, stačí implementovat funkci dokumentu Serialize , která zapisuje a čte do a z archivu. Musíte také implementovat Serialize pro všechny CObject-odvozené objekty, které funkce dokumentu Serialize následně serializuje přímo nebo nepřímo.

Explicitní vytvoření objektu CArchive

Kromě serializace dokumentu prostřednictvím architektury existují i jiné příležitosti, kdy budete potřebovat CArchive objekt. Můžete například chtít serializovat data do schránky a ze schránky reprezentované objektem CSharedFile . Nebo můžete chtít použít uživatelské rozhraní pro ukládání souboru, který se liší od souboru nabízeného architekturou. V takovém případě můžete objekt explicitně vytvořit CArchive . Provedete to stejným způsobem jako architektura pomocí následujícího postupu.

Explicitní vytvoření objektu CArchive

  1. Vytvoření objektu CFile nebo objektu odvozeného z CFile.

  2. CFile Předejte objekt konstruktoru pro CArchive, jak je znázorněno v následujícím příkladu:

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

    Druhým argumentem konstruktoru CArchive je výčtová hodnota, která určuje, zda se archiv použije k ukládání nebo načítání dat do nebo ze souboru. Serialize Funkce objektu kontroluje tento stav voláním IsStoring funkce pro archivní objekt.

Po dokončení ukládání nebo načítání dat do nebo z objektu CArchive je zavřete. CArchive I když objekty (aCFile) automaticky zavře archiv (a soubor), je vhodné to explicitně provést, protože usnadňuje obnovení z chyb. Další informace o zpracování chyb najdete v článku Výjimky: Zachytávání a odstraňování výjimek.

Zavření objektu CArchive

  1. Následující příklad ukazuje, jak objekt zavřít CArchive :

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

Viz také

Serializace: Serializace objektu