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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 06:24   #1
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию sizeof() или не sizeof()?

подскажите что не так программа работает нормально, но при нажатие на крестик или отмена (кнопки закрытие программы) показано окно восклицания и в нем написано

Необработанное исключение в "0x00516fd9" в "f1f.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee".

Что не так???
Код:
void Cf1fDlg::OnBnClickedButton1()
{
	UpdateData(true);
	e=m_e;  //тип CString (обе) m_e - "эдит контрол" е-переменая  
		DWORD pdd;
		HANDLE hF=CreateFile(_T("C:\\file\\2Cfile.bat"),
			GENERIC_READ|GENERIC_WRITE,
			0,
			NULL,
			CREATE_ALWAYS,
			0,
			NULL
			);

		WriteFile(hF, &e, sizeof(e), &pdd, NULL);
		SetFilePointer(hF,NULL,NULL,FILE_BEGIN);
		CString tt;
		ReadFile(hF, &tt, sizeof(tt), &pdd, NULL);

		m_st=tt; //m_st-"статик текст" типа CString

		CloseHandle(hF);

		UpdateData(false);
	
}
По ошибкам что-то не правильно в sizeof() (в файле ATLSIMPSTR_H это компиляторный файл, на 181-183 строчке). Правильно ли что в программе в функциях ReadFile и WriteFile третьем аргументом является sizeof()???

Последний раз редактировалось Stilet; 02.04.2012 в 07:59.
Madmaxisss вне форума Ответить с цитированием
Старый 02.04.2012, 08:46   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не пишут так строки вот и вся ошибка.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.04.2012, 17:37   #3
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

чё тип CSrtring вообще сохранить и прочитать из файла ни как нельзя? при помощи WriteFile и ReadFile
Madmaxisss вне форума Ответить с цитированием
Старый 02.04.2012, 18:07   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сохранять надо данные строки, а не сам класс(который не POD тип)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.04.2012, 21:26   #5
Madmaxisss
Форумчанин
 
Регистрация: 12.07.2011
Сообщений: 158
По умолчанию

только так: да?
Код:
void Cf3fDlg::OnBnClickedButton1()
{
	UpdateData(true);
	char s[100];
	sprintf(s, "%S=", m_e); //m_e тип СString
	DWORD pdd;
	HANDLE hF=CreateFile(_T("C:\\file\\file1.txt"),
		GENERIC_READ|GENERIC_WRITE,
		0,
		NULL,
		CREATE_ALWAYS,
		0,
		NULL
		);

	WriteFile(hF, &s, sizeof(s), &pdd, NULL);
	SetFilePointer(hF,NULL,NULL,FILE_BEGIN);
	char tt[100];
	ReadFile(hF, &tt, sizeof(tt), &pdd, NULL);
	CString ss(tt);
	m_st=ss;   // CString 
	CloseHandle(hF);
	UpdateData(false);
}
а как сделать чтобы можно было работать с русскими символами??? (setlocale() не помогает).

Последний раз редактировалось Stilet; 02.04.2012 в 21:55.
Madmaxisss вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает sizeof в Visual Studio 2010 MegaVega Visual C++ 1 21.02.2012 08:56
Тестирующая программа (на PHP или JavaScript или Delphi или Visual Basic) @@@Сергей@@@ Фриланс 2 05.05.2011 17:48
SIZEOF? GerNick Общие вопросы C/C++ 6 22.01.2011 17:59
sizeof , rand , адрес переменных. Gradus C++ Builder 30 24.08.2010 23:12
SizeOf выдает значение на порядок меньше. Alex Cones Общие вопросы Delphi 4 15.01.2010 21:24