www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 73 - Сохранение и востановления данных

Любое, наверно, приложение за исключением утилит должно создавать и сохранять и читать данные. MFC уже подумало об этом заранее. Как уже было сказано переменные с данными должны храниться в классе документа C_name_Doc. В этом классе есть функция, которая ответственна за сохранение и чтение объектов класса. Имя её Serialize. Откройте проект Pr1 и посмотрите в ClassView список функция для CPr1Doc. Два раза щелкните на Selialize. Должен быть такой код.
////////////////////////////////////////////////////////
// CPr1Doc serialization

void CPr1Doc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

////////////////////////////////////////////////////////
Эта функция будет всегда вызываться при открытии и сохранении файла. То есть, если Вы выбираете пункты меню File - > Open -> Save -> Save As... всегда вызывается эта функция. Как ей пользоваться ? Для этого сначала необходимо отличить код записи от считывания. Там где написано storing нужен код для сохранения, а где loading код для считывания. Реально, например, для записи и считывания целого числа надо всего изменить код вот так.
void CPr1Doc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		ar << m_int;
	}
	else
	{
		ar >> m_int;
	}
}
Для записи и чтения данных определены операторы << и >>. Эти операторы аналогичны потокам. Они определены для всех простых типов.
 BYTE
 WORD
 int
 LONG
 DWORD
 float
 double
Кроме того многие классы поддерживают данные операторы. Например, CString. Но для каждого класса надо смотреть отдельно. Вот пример.
	CString m_string;
	if (ar.IsStoring())
	{
		ar << m_string;
	}
	else
	{
		ar >> m_string;
	}
Если Вы используете свои классы и хотите производить подобные операции за один заход, то Вам придется перегрузить данные операции для Вашего класса.

Следует отметить, что Serialize позволяет иметь только последовательный доступ. Для более тонкой работы Вы можете использовать класс CFile. Но мы пока на этом остановимся.


Итак класс документа обеспечивает Вас функцией Serialize, с помошью который Вы можете сохранять и восстанавливать данные. Для использования этой возможности Ваши данные должны поддерживать операции << и >>.


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz