Проблемы с открытием файла - PullRequest
1 голос
/ 25 ноября 2011

Что может быть причиной того, что этот код приведет к m_cause из 0 для открытия файла.Найдено множество причин, по которым будет возвращен другой код, но нет причин для 0.

CFileException fileException;
CFile myFile;
if (myFile.Open("C:\\test\\docs\\test.txt", CFile::modeCreate | CFile::modeWrite, &fileException))
{
    TRACE( "Can't open file %s, error = %u\n", "test.txt", fileException.m_cause );
}

Ответы [ 2 ]

5 голосов
/ 25 ноября 2011

CFile::Open() не возвращает ноль при успехе, вызов в вашем примере не завершается!

Проверка на !CFile::Open(...)

0 голосов
/ 25 ноября 2011

Возвращаемое значение

Ненулевое значение, если открытие прошло успешно; в противном случае 0. Параметр pError имеет смысл только в том случае, если возвращается 0.

Взято из MSDN (я ссылался на документацию по Visual Studio 2010, но это то же самое, что и в VS2005 и 2003, и, вероятно, после этого).

Согласно предложению Берт-Джана, вы должны проверить !CFile::Open(...), так как в случае, если файл не открывается, вы на самом деле не обработаете ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...