Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СFile::Open error 
:(
    Опции темы
CallMeArt
Дата 27.6.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.6.2011

Репутация: нет
Всего: нет



Имеются две функции
m_File объявлен как 
Код

CFile m_File;

Код

BOOL CDataSocket::PrepareReceiveFile(LPCTSTR lpszFilename)
{
    // close file if it's already open
    if (m_File.m_hFile != NULL)
    {
        m_File.Close();
    }

    // open destination file
    if (!m_File.Open(lpszFilename, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate | CFile::shareDenyWrite))
    {
        return FALSE;
    }
    m_nTotalBytesReceive = 0;
    m_nTotalBytesTransfered = 0;
    return TRUE;
}


BOOL CDataSocket::PrepareSendFile(LPCTSTR lpszFilename)
{
    // close file if it's already open
    if (m_File.m_hFile != NULL)
    {
        m_File.Close();
    }

    // open source file (bug fix by Mutex)
    if (!m_File.Open(lpszFilename, CFile::modeRead | CFile::shareDenyNone | CFile::typeBinary))
    {
        return FALSE;
    }
    m_nTotalBytesSend = m_File.GetLength();
    m_nTotalBytesTransfered = 0;
    return TRUE;
}



при прохождении программой строк с m_File.Open выскакивает окно с ошибкой : [
Код


Debug Assertion Failed!
Porgram: D:\Programming\Projects 2010\FtpServer\Debug\FtpServer.exe
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\filecore.cpp
Line: 183


\*-----------блаблабла читайте документацию про asserts--------*\

(Press Retry to debug the application)


по нажатию на повтор компилятор указывает следующую строку
Код


BOOL CFile::Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pException)
{
/*---------------------------------------------------*/
    // shouldn't open an already open file (it will leak)
    ASSERT(m_hFile == INVALID_HANDLE_VALUE);

/*--------------------------------------------------*/



shouldn't open an already open file (it will leak) - я не открываю уже открытый файл, т.к. перед вызовом функции идёт проверка

причём CDataSocket::PrepareReceiveFile файл всё таки создаётся, но записать в него не удаётся
а при CDataSocket::PrepareSendFile  файл открывается для чтения и мне удаётся в дальнейшем его переслать

как решить проблему? 
буду благодарен за помощь

Добавлено через 9 минут и 23 секунды
вопрос решён 
нужно было сравнивать не с Null а со спец константой

Код

if (m_File.m_hFile != CFile::hFileNull)

PM MAIL   Вверх
GremlinProg
Дата 27.6.2011, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106




M
GremlinProg
Тема перемещена из раздела C/C++: Системное программирование и WinAPI



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.