Due modi per creare un oggetto CArchive
Esistono due modi per creare un CArchive
oggetto:
Creazione implicita di un oggetto CArchive tramite il framework
Il modo più comune e più semplice consiste nel consentire al framework di creare un CArchive
oggetto per il documento per conto dei comandi Salva, Salva con nome e Apri dal menu File.
Ecco cosa fa il framework quando l'utente dell'applicazione rilascia il comando Salva con nome dal menu File:
Visualizza la finestra di dialogo Salva con nome e ottiene il nome file dall'utente.
Apre il file denominato dall'utente come
CFile
oggetto .Crea un
CArchive
oggetto che punta a questoCFile
oggetto. Nella creazione dell'oggettoCArchive
, il framework imposta la modalità su "store" (scrittura, serializzazione), anziché su "load" (lettura, deserializzazione).Chiama la
Serialize
funzione definita nellaCDocument
classe derivata da , passando un riferimento all'oggettoCArchive
.
La funzione del Serialize
documento scrive quindi i dati nell'oggetto CArchive
, come spiegato a breve. Al ritorno dalla Serialize
funzione, il framework elimina definitivamente l'oggetto CArchive
e quindi l'oggetto CFile
.
Pertanto, se si consente al framework di creare l'oggetto CArchive
per il documento, è necessario implementare la funzione del Serialize
documento che scrive e legge da e verso l'archivio. È inoltre necessario implementare Serialize
per qualsiasi CObject
oggetto derivato da che la funzione del Serialize
documento serializza direttamente o indirettamente.
Creazione esplicita di un oggetto CArchive
Oltre a serializzare un documento tramite il framework, esistono altre occasioni in cui potrebbe essere necessario un CArchive
oggetto . Ad esempio, è possibile serializzare i dati da e verso gli Appunti, rappresentati da un CSharedFile
oggetto . In alternativa, è possibile usare un'interfaccia utente per salvare un file diverso da quello offerto dal framework. In questo caso, è possibile creare in modo esplicito un CArchive
oggetto . Si esegue questa operazione allo stesso modo del framework, usando la procedura seguente.
Per creare in modo esplicito un oggetto CArchive
Costruire un
CFile
oggetto o un oggetto derivato daCFile
.Passare l'oggetto
CFile
al costruttore perCArchive
, come illustrato nell'esempio seguente:CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);
Il secondo argomento del
CArchive
costruttore è un valore enumerato che specifica se l'archivio verrà utilizzato per l'archiviazione o il caricamento di dati da o verso il file. LaSerialize
funzione di un oggetto controlla questo stato chiamando laIsStoring
funzione per l'oggetto archivio.
Al termine dell'archiviazione o del caricamento dei dati da o verso l'oggetto CArchive
, chiuderli. Anche se gli CArchive
oggetti (e CFile
) chiuderanno automaticamente l'archivio (e il file), è consigliabile farlo in modo esplicito perché rende più semplice il ripristino dagli errori. Per altre informazioni sulla gestione degli errori, vedere l'articolo Eccezioni: Rilevamento ed eliminazione di eccezioni.
Per chiudere l'oggetto CArchive
Nell'esempio seguente viene illustrato come chiudere l'oggetto
CArchive
:archive.Close(); theFile.Close();