FTPWanderer代码中的3个Bug

来源:互联网 发布:软件开发 翻译 编辑:程序博客网 时间:2024/06/07 15:30

1、上传文件时,如果文件大小是1024的整数倍,则提示出错

2、新建一个目录然后重命名,这时会新建一个目录而没有重命名

3、上传下载包含中文名称和%字符的文件名时程序会挂掉

 

1、将void CUploadThread::UploadFile(CString &source, CString &dest)中的

while (nRead == BUF_SIZE && (WaitForSingleObject(m_hEventKill, 0) == WAIT_TIMEOUT))

改为while (nRead !=0&& (WaitForSingleObject(m_hEventKill, 0) == WAIT_TIMEOUT))即可,Bug产生原因

 

nRead = m_File.Read(buffer, BUF_SIZE);

// write buffer to remote data file

pInternetFile->Write(buffer, nRead);  //如果上传文件为1024的整数倍,则最后一定读取的本地文件大小为0字节,CInternetFile::Write的第二个参数为0则产生异常,但测试发现CFile::Write 0个字节没有问题。

 

2、将void CMainFrame::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 增加m_bNewFolderMode = FALSE;
   LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    if ((pDispInfo->item.pszText) && (m_pFtpConnection))
    {
        if (m_bNewFolderMode)
        {
            GetTraceView()->AddTraceLine(2, "[%d] Creating New Folder /"%s/"", AfxGetThread()->m_nThreadID, pDispInfo->item.pszText);
            if (m_pFtpConnection->CreateDirectory(pDispInfo->item.pszText))
            {
                GetFtpListView()->SetFileName(pDispInfo->item.iItem, pDispInfo->item.pszText);
                m_hCurrentTreeItem = GetFtpTreeView()->GetTreeCtrl().GetSelectedItem();
                int nIcon = GetIconIndex("Desktop", TRUE);
                HTREEITEM hItem = GetFtpTreeView()->GetTreeCtrl().InsertItem(pDispInfo->item.pszText, nIcon, nIcon, m_hCurrentTreeItem);
                m_bNewFolderMode = FALSE;/////添加这句就OK了
3、解决方法是修改void AddTraceLine(int nType, LPCTSTR pstrFormat, ...)函数部分代码,其中的CString::Formate出错
原创粉丝点击