Dwa sposoby tworzenia obiektu CArchive

Istnieją dwa sposoby tworzenia CArchive obiektu:

Niejawne tworzenie obiektu CArchive za pośrednictwem struktury

Najprostszym i najbardziej typowym sposobem jest utworzenie CArchive obiektu dla dokumentu w imieniu poleceń Zapisz, Zapisz jako i Otwórz w menu Plik.

Oto, co platforma robi, gdy użytkownik aplikacji wystawia polecenie Zapisz jako z menu Plik:

  1. Wyświetla okno dialogowe Zapisz jako i pobiera nazwę pliku od użytkownika.

  2. Otwiera plik o nazwie użytkownika jako CFile obiekt.

  3. Tworzy obiekt wskazujący CArchive ten CFile obiekt. Podczas tworzenia CArchive obiektu platforma ustawia tryb "store" (zapis, serializowanie), w przeciwieństwie do "ładowania" (odczyt, deserializowanie).

  4. Wywołuje funkcję zdefiniowaną Serialize w CDocumentklasie -pochodnej, przekazując jej odwołanie do CArchive obiektu.

Funkcja dokumentu Serialize zapisuje następnie dane w CArchive obiekcie, jak wyjaśniono wkrótce. Po powrocie CArchive z Serialize funkcji struktura niszczy obiekt, a następnie CFile obiekt.

W związku z tym, jeśli platforma pozwoli utworzyć CArchive obiekt dla dokumentu, wszystko, co musisz zrobić, to zaimplementować funkcję dokumentu Serialize , która zapisuje i odczytuje do i z archiwum. Należy również zaimplementować Serialize dla dowolnych CObjectobiektów pochodnych, które funkcja dokumentu Serialize z kolei serializuje bezpośrednio lub pośrednio.

Jawne tworzenie obiektu CArchive

Oprócz serializacji dokumentu za pośrednictwem struktury, istnieją inne sytuacje, w których może być potrzebny CArchive obiekt. Na przykład możesz chcieć serializować dane do i ze Schowka reprezentowane CSharedFile przez obiekt. Możesz też użyć interfejsu użytkownika do zapisania pliku innego niż ten oferowany przez platformę. W takim przypadku można jawnie utworzyć CArchive obiekt. Można to zrobić w taki sam sposób, jak w przypadku platformy, korzystając z poniższej procedury.

Aby jawnie utworzyć obiekt CArchive

  1. Konstruowanie CFile obiektu lub obiektu pochodzącego z CFileelementu .

  2. Przekaż obiekt do konstruktora CFile dla CArchiveelementu , jak pokazano w poniższym przykładzie:

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

    Drugim argumentem konstruktora CArchive jest wyliczona wartość określająca, czy archiwum będzie używane do przechowywania lub ładowania danych do lub z pliku. Funkcja Serialize obiektu sprawdza ten stan, wywołując IsStoring funkcję dla obiektu archiwum.

Po zakończeniu CArchive przechowywania lub ładowania danych do lub z obiektu zamknij go. CArchive Mimo że obiekty (i CFile) automatycznie zamykają archiwum (i plik), dobrym rozwiązaniem jest jawne zrobienie tego, ponieważ ułatwia odzyskiwanie po błędach. Aby uzyskać więcej informacji na temat obsługi błędów, zobacz artykuł Wyjątki: przechwytywanie i usuwanie wyjątków.

Aby zamknąć obiekt CArchive

  1. W poniższym przykładzie pokazano, jak zamknąć CArchive obiekt:

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

Zobacz też

Serializacja: serializacja obiektu