|
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
|