Шаг 57 - Как создать CArchive объект самим.

Создание проекта

Создаем проект на основе диалогового окна. Помещаем кнопку. И привязываем событие к нажатию этой кнопки. Создаем проект на основе диалогового окна. Помещаем кнопку. И привязываем событие к нажатию этой кнопки. Делали уже раньше.

57_1.gif (2405 b)

Создаем код

Код нажатия кнопки.

void CMy57Dlg::OnButton1() 
{
CFile file("SAVE.TXT", CFile::modeWrite | CFile::modeCreate); // создать файл
CArchive ar(&file, CArchive::store); // на основе него обьект архив
CString s("Hello");
ar << s; // записать в архив
ar.Close(); // закрыть архив
file.Close(); // закрыть файл
}

Описание

Для использования класса CArchive нам необходимо создать класс CFile. Этот класс является базовым для классов работы с файлами. Этот класс поддерживает не буферизированный двоичный ввод/вывод. Вы на его основе можете создавать свои классы. Конструктор этого класса

CFile( LPCTSTR lpszFileName, UINT nOpenFlags ); throw( CFileException );

Как видите, он простой. Имя файла и флаги. Он порождает исключение типа CFileException. Вообще то его надо отлавливать. Но ладно. Флагов много. Вот основные.

CFile::modeCreate 	создает новый файл или отрезает длину существующего до нуля  
CFile::modeRead разрешается только читать
CFile::modeReadWrite и чтение и запись
CFile::modeWrite только запись
CFile::typeBinary устанавливает двоичный режим доступа
CFile::typeText устанавливает текстовый режим доступа

Имея объект класса CFile можно создать и CArchive. Этот класс не имеет базового класса. Этот класс позволяет сохранять сложные цепи ваших объектов. Этот процесс называют преобразование в последовательную форму serialization. Конечно этот объект может обрабатывать не только простые типы данных, но и правильно порожденные объекты от CObject (с учетом записи на диск). Ниже показан конструктор класса.

CArchive( CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL );
throw( CMemoryException, CArchiveException, CFileException );

Как видите, обязательно нужен объект CFile и режим объекта. Их три. Но главные два.

CArchive::load   чтение данных
CArchive::store запись данных

Теперь этот пример понятен. Открываю файл для записи и с созданием ( первый раз его нет, второй раз удаление и создание заново). Создаю объект архива. Записываю туда строку и закрываю все. У вас в каталоге проекта должен появиться файл. Его можно посмотреть обычным текстовым редактором.

57_2.gif (5647 b)

Шпаргалка

Создать объект CFile

 CFile file("SAVE.TXT", CFile::modeWrite | CFile::modeCreate);	// создать файл

от него CArhive

 CArchive ar(&file, CArchive::store);	// на основе него обьект архив

можно использовать

 ar << s;				// записать в архив

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 26.10.99 (обновлено 15.07.2001)