Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,699
|
|||||||||||
1 | |||||||||||
проверить CFile20.12.2012, 23:00. Показов 1790. Ответов 10
Метки нет (Все метки)
у меня VS 2008 русская профессиональная
прошу проверить вот такой тестовый код на других версиях
при падении вышел на такой код
в MFC вообще отказались от поддержки текстового режима CFile или только в моей версии?
0
|
20.12.2012, 23:00 | |
Ответы с готовыми решениями:
10
CFile, чтение файла Исходный код CFile из MFC Обработка файлов CFile & CArchive CFile не читает уже открытый на запись файл |
Заблокирован
|
||||||
22.12.2012, 11:10 | 2 | |||||
ValeryS, cуть проблемы вот в чём, в MSVS 2008 задачи выделения памяти, преобразования типов в основном возложены на программиста. Потому крах твоей программы происходил от того что под CFileDialog::m_ofn.lpstrFile не выделял память/либо не присваивал константной строковой переменной.
Посмотри этот проект, также как бонус обрати внимание на тело конструктора MFCOpenSaveDlg верней переменную OPENFILENAME и посмотри инициализацию её полей в BOOL CMFCOpenSaveDlg::OnInitDialog(), как ты понял я подал ещё и код с диалогами открытия/сохранения в стиле API (причём будет тот же CFileDialog) мне как то GetOpen(Save)FileName больше нравятся, т.к можно не заморачваться на класс CFileDialog а просто передавать поля структуры в отдельные модули, причём одну и ту же структуру для обоих диалогов (очень функционально и компактно на мой взгляд)
0
|
Заблокирован
|
||||||
22.12.2012, 11:20 | 4 | |||||
Доработай 1-ую функцю проекта
0
|
|
22.12.2012, 11:21
#5
|
Не по теме: В заключение :ИМХО CStdioFile на много лучше CFile...
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,699
|
||||||
22.12.2012, 11:39 [ТС] | 6 | |||||
разумеется в Release ASSERT выбрасывается
но ведь зачем то он там стоит? нет здесь все в порядке диалог я дал только для того чтобы не привязываться к конкретным файлам если написать так
проблема в CFile::typeText началось все с того что я решил открыть текстовый файл в CFile, не получилось, плюнул, сделал через fopen fread, но осадочек то остался насколько я помню в шестерке это работало(правдо давно я с ней не работаю) сейчас скачал 2012, поставил на виртуалку попробую с ней Добавлено через 7 минут я правильно понял, что шестерка тоже выбрасывает? не знаю не работал я вообще CFile и прочее пытаюсь не использовать, посему в этом классе не силен
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,699
|
|
22.12.2012, 11:44 [ТС] | 8 |
понимаешь он может просто игнорировать этот флаг
насколько я помню разница между текстовым и бинарным режимом в обработке 0x0D 0x0A в бинарном читает 2 байта в текстовом заменяет на один перевод строки (а ну еще ^Z конец файла) посему логика может нарушится
0
|
Заблокирован
|
|
22.12.2012, 11:45 | 9 |
ValeryS, http://msdn.microsoft.com/en-u... s.80).aspx
CFile::typeText Sets text mode with special processing for carriage return–linefeed pairs (used in derived classes only). CFile в автомате(как скажем i(o)fstream же стоит в текстовом режиме, на двоичный сбрасываем typeBinary а для текстового ничего не надо).
0
|
Заблокирован
|
|
22.12.2012, 12:07 | 11 |
ValeryS, делай typeBinaryпри таком режиме перевод на новую строку буде \r\n т.е 2 символа вместо привычного \n
0
|
22.12.2012, 12:07 | |
22.12.2012, 12:07 | |
Помогаю со студенческими работами здесь
11
Как открыть txt документ и считать в переменную string содержимое, используя CFile? Как проверить конец файла в CFile Написать классы CFile и CMyDataFile MaskEdit: Как проверить на пустоту номер телефона, а также проверить ввод всех его цифр? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |