Как получить конкретную информацию об ошибке из GetFile ()? - PullRequest
2 голосов
/ 29 января 2010
void GetFtpFile(LPCTSTR pszServerName, LPCTSTR pszRemoteFile, LPCTSTR pszLocalFile)
{
   CInternetSession session(_T("My FTP Session"));
   CFtpConnection* pConn = NULL;

   pConn = session.GetFtpConnection(pszServerName);
   //get the file
   if (!pConn->GetFile(pszRemoteFile, pszLocalFile))
   {
      //display an error
   }
   delete pConn;
   session.Close();
}

Как получить конкретную информацию об ошибке от GetFile ()?

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 января 2010

Согласно MSDN это GetLastError ()

1 голос
/ 29 января 2010

Согласно MSDN :

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

Ненулевое значение в случае успеха;

в противном случае 0. В случае сбоя вызова Win32 функция GetLastError может быть призван определить причину ошибка.

GetLastError () возвращает код ошибки, но вы можете вызвать FormatMessage () , чтобы получить читаемую человеком строку из кода ошибки. Вот полезная функция, которая сделает это за вас:

std::string formatwinerr(unsigned long errCode)
{
    LPVOID lpMsgBuf;

    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM ,
        0,
        errCode,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );

    std::string ret((const char*)lpMsgBuf);

    LocalFree(lpMsgBuf);

    return ret;
}
1 голос
/ 29 января 2010

А как насчет GetLastError ()?

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