Compartir por


Dos maneras de crear un objeto CArchive

Hay dos formas de crear un objeto CArchive:

Creación implícita de un objeto CArchive a través de Framework

La manera más común y sencilla es permitir que el marco cree un objeto CArchive para el documento en nombre de los comandos Guardar, Guardar como y Abrir en el menú Archivo.

Esto es lo que hace el marco cuando el usuario de la aplicación emite el comando Guardar como desde el menú Archivo:

  1. Presenta el cuadro de diálogo Guardar como y obtiene el nombre de archivo del usuario.

  2. Abre el archivo denominado por el usuario como un objeto CFile.

  3. Crea un objeto CArchive que apunta a este objeto CFile. Al crear el CArchive objeto, el marco establece el modo en «almacenar» (escritura, serialización), en lugar de «cargar» (lectura, deserialización).

  4. Llama a la función Serialize definida en la clase derivada de CDocument, pasando una referencia al objeto CArchive.

A continuación, la función Serialize de tu documento escribe datos en el CArchive objeto, como se explica en breve. Tras la devolución de tu función Serialize, el marco destruye el objeto CArchive y, a continuación, el objeto CFile.

Por lo tanto, si permites que el marco cree el objeto para el documento CArchive, todo lo que tiene que hacer es implementar la función del documento Serialize que escribe y lee en y desde el archivo. También debes implementar Serialize para cualquier objeto derivado de CObject que la función del documento Serialize se serialice directa o indirectamente.

Creación explícita de un objeto CArchive

Además de serializar un documento a través del marco de trabajo, hay otras ocasiones en las que es posible que necesites un objeto CArchive. Por ejemplo, puede que desees serializar datos hacia y desde el Portapapeles, representado por un objeto CSharedFile. O bien, puedes usar una interfaz de usuario para guardar un archivo diferente del que ofrece el marco. En este caso, puedes crear explícitamente un objeto CArchive. Esto se hace de la misma manera que lo hace el marco, con el procedimiento siguiente.

Para crear explícitamente un objeto CArchive

  1. Construye un objeto CFile o un objeto derivado de CFile.

  2. Pasa el objeto CFile al constructor para CArchive, como se muestra en el ejemplo siguiente:

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

    El segundo argumento para el constructor CArchive es un valor enumerado que especifica si el archivo se usará para almacenar o cargar datos en o desde el archivo. La función Serialize de un objeto comprueba este estado llamando a la función IsStoring para el objeto de archivo.

Cuando hayas terminado de almacenar o cargar datos en el objeto CArchive o desde él, ciérralo. Aunque los objetos CArchive (y CFile) cerrarán automáticamente el archivo (y el archivo), es recomendable hacerlo explícitamente, ya que facilita la recuperación de errores. Para obtener más información, consulta el artículo Excepciones: detección y eliminación de excepciones.

Para cerrar el objeto CArchive

  1. En el ejemplo siguiente se muestra cómo utilizar la expresión CArchive:

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

Consulte también

Serialización: Serializar un objeto