⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 breakpointdown.cpp

📁 类似flashget下载工具代码 本来想在完善了上传的
💻 CPP
字号:
// BreakPointDown.cpp : implementation file
//

#include "stdafx.h"
#include "MyInsaneBT.h"
#include "BreakPointDown.h"
#include "DataBase.h"
#include <fstream>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBreakPointDown

CBreakPointDown::CBreakPointDown()
{
}

CBreakPointDown::~CBreakPointDown()
{
	 MAPCFG.clear();
}

//********************************************************************************** 
//** 函数名称: CBreakPointDown::create_cfg_file
//** 输    入: const char* spath;const char* filename
//** 输    出: bool 
//** 功能描述: //创建*.cfg文件
//** 作    者: shuyi
//** 创建日期: 2007-7-16
//**************修改记录************************************************************ 
//** 修 改 者: shuyi
//** 修改日期: 2007-7-16
//** 修改描述: 
//** 版    本: V1.0
//********************************************************************************** 
bool CBreakPointDown::create_cfg_file(const char* spath,const char* filename,const char* url)
{
     CString newname;
	 CString sfile = filename;
     CString fullpath;
     CFile pFile;
     CString filePath;
	 CString file_name;
	 file_name = filename;
	 newname = sfile.Left(sfile.GetLength()-4);
     newname+=".cfg";
	 
	 
	 fullpath =  spath;
	 //去掉文件名字,获得路局
     int nPos = fullpath.ReverseFind('\\');
     fullpath = fullpath.Left(nPos+1);
	 filePath = fullpath + file_name;
	 fullpath+=newname;
	 if(!pFile.Open(fullpath,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone))
		return false;
     pFile.Close();
     
	 
	 Save_cfg_Path(fullpath.GetBuffer(1),url,filePath);
	 Init_cfg_file(fullpath.GetBuffer(1));
     m_filepath = fullpath;
     return true;
}



// 初始化cfg文件
void CBreakPointDown::Init_cfg_file(const char* sPath)
{  
     CStdioFile pFile;
     CString key;
     CString value="";
	 CString combain;
     
     pFile.Open(sPath,CFile::modeWrite|CFile::shareDenyNone);
     
	 //保存路局
	 key = "FULLPATH";
     combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 
	 //文件名字
     key = "FILENAME";
     combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //文件大小
	 key = "FILESIZE";
     combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));


	 //已下载字节数CompletedSize
	 key = "COMPLETEDSIZE";
     combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 
	 //线程个数
	 key = "THREADNUM";
     combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
     //用时  
	 key = "USETIME";
     combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
     //PID
	 key="PID";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //URL
     key="URL";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 
	 	
	 //已完成
     key="PERCENT";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //breakpoint1 线程下载断点
     key="BREAKPOINT0";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //LENGTH1 线程结束短点
	 key="LENGTH0";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
     MAPCFG.insert(make_pair(key,value));

	 

	 
	 //breakpoint1 线程下载断点
     key="BREAKPOINT1";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //LENGTH1 线程结束短点
	 key="LENGTH1";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
     MAPCFG.insert(make_pair(key,value));
	 //3

	 
	 //breakpoint3 线程下载断点
     key="BREAKPOINT2";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //LENGTH1 线程结束短点
	 key="LENGTH2";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
     MAPCFG.insert(make_pair(key,value));
	 //breakpoint4 线程下载断点
     key="BREAKPOINT3";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //LENGTH1 线程结束短点
	 key="LENGTH3";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
     MAPCFG.insert(make_pair(key,value));
	 key="BREAKPOINT4";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
     pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 //LENGTH1 线程结束短点
	 key="LENGTH4";
	 combain = key + "=" + value; 
     pFile.WriteString(combain);
	 pFile.WriteString("\n");
	 MAPCFG.insert(make_pair(key,value));
	 pFile.Close();
  
}



void CBreakPointDown::CFG_Close()
{
	ofstream out; //用C++流方式写文件

	out.open(m_filepath.GetBuffer(1));

	if(out.fail())
	{
	   return;
	}
    //写配置文件
	int size = MAPCFG.size();
	for(map<CString,CString>::iterator i = MAPCFG.begin(); i != MAPCFG.end(); i++ )
	{   
		CString key= (*i).first;
	    CString value = (*i).second;
	
		out << key.GetBuffer(1)<<"=" << value.GetBuffer(1)<<endl;
	}
	out.close();
	
}

//保存
void CBreakPointDown::open_cfg_file(const char* sPath)
{
    ifstream in; //C++流读配置文件
    CString key,val;


    MAPCFG.clear();
	in.open(sPath);

	if(in.fail( ))
	{
		return;
	}
    
	while(!in.eof()) //读配置文件
	{
		char pBuf[1024];

		in.getline(pBuf,1023);

		CString strTemp = pBuf;

		

		if(strTemp.IsEmpty() || strTemp[0] == '#' )
			continue;

	    int iSplit = strTemp.Find("=");

	    //Key=Val;
        key = strTemp.Left(iSplit);
        val = strTemp.Mid(iSplit+1,strTemp.GetLength()-iSplit);
		MAPCFG.insert(make_pair(key,val));
		
	}

	in.close( );
  

}

CString CBreakPointDown::CFG_GetString(CString strKey)
{

    if( MAPCFG.find(strKey) == MAPCFG.end( ) )
		return "";
	else
		return MAPCFG[strKey];

}

int CBreakPointDown::CFG_GetInt(CString strKey)
{
	if( MAPCFG.find( strKey ) == MAPCFG.end( ) )
		return -1;
	else
		return atoi( MAPCFG[strKey].GetBuffer(1));
}

void CBreakPointDown::CFG_SetString(CString strKey, CString x)
{
	MAPCFG[strKey] = x;
}

void CBreakPointDown::CFG_SetInt( CString strKey,long x )
{   
	CString val;
	val.Format("%d",x);
	MAPCFG[strKey] = val;
}


void CBreakPointDown::CFG_Setfloat( CString strKey,float x)
{ 
    CString val;
	val.Format("%.2f",x);
	MAPCFG[strKey] = val;
}

void CBreakPointDown::DeleteFile()
{
     CFile::Remove(m_filepath);
	 
}

void CBreakPointDown::Flush()
{
     CFG_Close();
}

//保存到数据库
void CBreakPointDown::Save_cfg_Path(const char* Path,const char* url,CString& FilePath)
{
     CString sPath = Path;
	 CString sUrl = url;

     if(!Is_Exit_Record(Path))
	 {  
        //删除文件
	    CFile::Remove(Path);   
 	    return;
	 }
	
	CString strConnect =CDataBase::Instance()->m_Connstring;
	//连接数据库
	if(!CDataBase::Instance()->Opendb(strConnect))
	{   
		AfxMessageBox("连接数据库失败");
        return ;
	}
	//获得代理信息
    CString SQL = "SELECT * FROM CFG_PATH";
    
    CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
    if(!pRs->Open((LPCTSTR)SQL))
	    return;


	pRs->AddNew(); //添加一条空纪录
    pRs->SetFieldValue("Path",sPath);
	pRs->SetFieldValue("URL",sUrl);
	pRs->SetFieldValue("FilePath",FilePath);
	pRs->Update();
    pRs->Close();
}


//删除纪录
void CBreakPointDown::Delete_Record(const char* Path)
{
    CString sPath = Path;
	CString strConnect =CDataBase::Instance()->m_Connstring;
	//连接数据库
	if(!CDataBase::Instance()->Opendb(strConnect))
	{   
		AfxMessageBox("连接数据库失败");
        return ;
	}

     CString SQL;
     SQL.Format("DELETE FROM CFG_PATH WHERE Path=\"%s\"",sPath);
     CDataBase::Instance()->m_DBConn.Execute(SQL);

}

//判断纪录是否存在
bool CBreakPointDown::Is_Exit_Record(const char* Path)
{
    CString sPath = Path;
    CString strConnect =CDataBase::Instance()->m_Connstring;
	//连接数据库
	if(!CDataBase::Instance()->Opendb(strConnect))
	{   
		AfxMessageBox("连接数据库失败");
        return false;
	}
	//获得代理信息
   
    CString SQL;
	SQL.Format("SELECT * FROM CFG_PATH WHERE Path=\"%s\"" ,sPath);
    
	CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
    if(!pRs->Open((LPCTSTR)SQL))
	    return false;

    if(pRs->IsEof())
		return true;
        return false;    

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -