Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2015, 10:55   #1
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию сериализация диалогового приложения

Создал диалоговое приложение, там есть класс диалога, я в нем перегрузил функцию Serialize и добавил в нее код
Код:
void CtestruDlg::Serialize(CArchive& ar)
{
	AfxMessageBox(L"Serialize");
	TRACE("Serialize\n");
	CDialogEx::Serialize(ar);//вызываем функцию предка
	if (ar.IsStoring())
	{	// storing code
		ar <<m_cLogin<<m_cPass;
	}
	else
	{	// loading code
		TRACE("Loading code\n");
		ar >>m_cLogin>>m_cPass;
	}
}
функция не вызывается, добавил в деструктор код создания архива
Код:
CtestruDlg::~CtestruDlg()
{
	//делаем сериализацию
	CFile file(L"SAVE.TXT", CFile::modeWrite | CFile::modeCreate);	// создать файл
    CArchive ar(&file, CArchive::store);				// на основе него обьект архив
    Serialize(ar);								// записать в архив
	ar.Close();								// закрыть архив
    file.Close();							// закрыть файл
}
нормально вызывается Serialize и создается файл.
Но когда добавил в конструктор код создания архива из файла и вызов serialize, то у меня вылазит исключение, вот код конструктора
Код:
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	//читаем из файла
	CFile file;
	if(file.Open(L"SAVE.TXT", CFile::modeRead|CFile::modeCreate))	// создать файл
	{
		CArchive ar(&file, CArchive::load);				// на основе него обьект архив
		Serialize(ar);								// записать в архив
		ar.Close();								// закрыть архив
		file.Close();
	}
}
И вылазит исключение
Необработанное исключение в "0x75a5812f" в "testru.exe": Исключение Microsoft C++: CArchiveException по адресу 0x0024efbc..
Как сделать сериализацию для диалога???
ninja2 вне форума Ответить с цитированием
Старый 22.08.2015, 11:23   #2
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Флаг неправильно поставил, нада CFile::modeRead, а вообще как правильно сериализацию делать? Это правильно что я функции вызываю из конструктора и деструктора? мб. нужно из приложения вызывать, хотя какая ему разница. Вообще наверно на это не нужно смотреть, самое главное чтобы без ошибок работало???
ninja2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сериализация Лета C# (си шарп) 9 24.09.2014 14:13
Сериализация Вов@ныч Общие вопросы Delphi 2 06.07.2009 09:54
сериализация Crucian Общие вопросы C/C++ 5 18.11.2007 16:37