📄 breakpointdown.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 + -