Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Istnieją dwa sposoby tworzenia CArchive obiektu:
Niejawne tworzenie obiektu CArchive za pośrednictwem struktury
Najprostszym i najbardziej typowym sposobem jest pozwolenie, aby framework utworzył obiekt CArchive dla Twojego dokumentu w imieniu poleceń Zapisz, Zapisz jako i Otwórz z menu Plik.
Oto, co platforma robi, gdy użytkownik aplikacji wystawia polecenie Zapisz jako z menu Plik:
Wyświetla okno dialogowe Zapisz jako i pobiera nazwę pliku od użytkownika.
Otwiera plik nazwany przez użytkownika jako obiekt
CFile.Tworzy obiekt
CArchive, który wskazuje na ten obiektCFile. Podczas tworzeniaCArchiveobiektu platforma ustawia tryb "store" (zapis, serializowanie), w przeciwieństwie do "ładowania" (odczyt, deserializowanie).Wywołuje funkcję
Serializezdefiniowaną w klasie pochodnejCDocument, przekazując jej odwołanie do obiektuCArchive.
Funkcja dokumentu Serialize zapisuje następnie dane w CArchive obiekcie, jak wyjaśniono wkrótce. Po powrocie z funkcji Serialize, framework niszczy obiekt CArchive, a następnie obiekt CFile.
W związku z tym, jeśli framework utworzy obiekt CArchive dla twojego dokumentu, wszystko, co musisz zrobić, to zaimplementować funkcję Serialize dokumentu, która zapisuje do i odczytuje z archiwum. Należy również zaimplementować Serialize dla dowolnych obiektów pochodnych CObject, które funkcja dokumentu Serialize z kolei serializuje bezpośrednio lub pośrednio.
Jawne tworzenie obiektu CArchive
Oprócz serializacji dokumentu za pomocą frameworku, są też inne sytuacje, w których może być potrzebny obiekt CArchive. 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. Robisz to tak samo, jak robi to framework, korzystając z poniższej procedury.
Aby jawnie utworzyć obiekt CArchive
Skonstruuj obiekt
CFilelub obiekt pochodny odCFile.Przekaż obiekt
CFiledo konstruktoraCArchive, 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
CArchivejest wyliczona wartość określająca, czy archiwum będzie używane do przechowywania lub ładowania danych do lub z pliku. FunkcjaSerializeobiektu sprawdza ten stan, wywołującIsStoringfunkcję dla obiektu archiwum.
Po skończeniu przechowywania lub ładowania danych do lub z obiektu CArchive zamknij go. Mimo że obiekty CArchive (i CFile) automatycznie zamykają archiwum (i plik), dobrą praktyką jest zrobienie tego jawnie, ponieważ ułatwia to 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
W poniższym przykładzie pokazano, jak zamknąć
CArchiveobiekt:archive.Close(); theFile.Close();