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

📄 extracttitle.cpp

📁 根据HTML的HEAD项将本机的HTML建立索引以便于浏览
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//DEL 	myWriteFile("result.html");
//DEL }
int CExtractTitle::_resultInfo::Insert()
{	return insertLine(insert);
}

//DEL void CExtractTitle::initSource(CString srcMain, CString srcInsert, LPCTSTR insertAfter, int after=1)
//DEL {	resultInfo.out=srcMain;
//DEL 	resultInfo.insert=srcInsert;
//DEL 	resultInfo.index=srcMain.Find(insertAfter);
//DEL 	if(after==1)	resultInfo.index+=strlen(insertAfter);
//DEL }

int CExtractTitle::initSource()
{	return initSource("source");
}

int CExtractTitle::initSourceFromFile(LPCTSTR fileName)
{	
	CString readsStr,readInsert;
	char* reads;
	DWORD number,place;
	if(!f.GetStatus(fileName,status))		return 1;	//file not exist;
	if(!f.Open(fileName,CFile::modeRead))		return 2;	//error in read;
	number=f.GetLength();
	reads=new char[number];
	f.Read(reads,number);
	f.Close();
	readsStr=reads;
	delete reads;
	number=readsStr.Find("<!--index");
	place=readsStr.Find("-->",number);
	readInsert=readsStr.Mid(number+9,place-number-9);
	initSource(readsStr,readInsert,number);
	return 0;
}

int CExtractTitle::initSource(CString srcMain, CString srcInsert, DWORD insertPlace)
{	resultInfo.out.Empty();
	resultInfo.out=srcMain;
	resultInfo.SetInsert(srcInsert);
	resultInfo.index=insertPlace;
	return 0;
}

void CExtractTitle::Seperate()
{	CString	seperate;
	seperate="<tr borderColorDark=#ffffff borderColorLight=#6868d0> \
            <td colspan=\"5\" height=\"1\" bgcolor=\"#FFCCFF\" class=\"14p\">	\
              <hr width=\"95%%\" align=\"center\">	\
            </td>	\
          </tr>";
	resultInfo.insertLine(seperate);	

}
int CExtractTitle::Do(int includeSub)
{	totalFileNumber=0;
	if(includeSub)	ExtractMutipleDir(path);
	else	ExtractDir(path);
	int returnDate=save(resultInfo.outFileName);
	CString str;
	str.Format("已经提取了%d个文件",totalFileNumber);
	Display(str);
	return returnDate;
}

int CExtractTitle::initSource(CString source)
{	DWORD	number=source.Find("<!--index");
	DWORD	place=source.Find("-->",number);
	CString readInsert=source.Mid(number+9,place-number-9);
	initSource(source,readInsert,number);
	return 0;
}
int CExtractTitle::creat(CString dir, CString output, CString source)
{	path=dir;
	totalPathlength=dir.GetLength();
	resultInfo.outFileName=output;
	return initSource(source);
}

int CExtractTitle::creatFromFile(CString dir, CString output, LPCTSTR source)
{	path=dir;
	totalPathlength=dir.GetLength();
	resultInfo.outFileName=output;
	return initSourceFromFile(source);
}

int CExtractTitle::ExtractMutipleDir(CString dir)
{	CFileFind finder;
	int dirNum=0;
    BOOL bWorking = finder.FindFile(dir+"\\*.*");
	while (bWorking)
	{	bWorking = finder.FindNextFile();
		if(finder.IsDirectory())
		{	dirNum++;
			path=finder.GetFilePath();
			if(finder.IsDots())
			//	if(dirNum!=2)//path.GetAt(path.GetLength()-2)!='.')
			//问题:如何只提取当前目录'\.',而不要上一个目录'\..'
			//不知为什么,不能在这里判断是不是上一级目录,不过,我放在ExtractDir这个函数
			//中,进行判断就可以了。
					ExtractDir(path);
			else
				ExtractMutipleDir(path);
		}
	}
	return 0;
}

void CExtractTitle::Display(CString disp)
{	if(hWnd)	
	{	hWnd->SetWindowText(disp);
		hWnd->UpdateWindow();
	}
}

void CExtractTitle::initDisplay(CWnd* wnd)
{
	hWnd=wnd;
}

int CExtractTitle::IsOk(CString objectStr)
{	int rst=1;
	if(objectStr.GetLength()<3)	return 0;
	if(DelSpace(objectStr).GetLength()<3)	return 0;
	return rst;
}

CString CExtractTitle::DelSpace(CString StringToDo)
{	CString delString="";
	int i,findIndex=0,tmpIndex;
	delString+=char(0x0D);	//空格和回车
	delString+=char(0x0A);
//	delString+=char(0x20);  //空格
	delString+=char(0x09);
	delString+=char(0x3C);	//<
	delString+=char(0x3E);	//>
	delString+=char(0x2F);	// /
	delString+=char(0x5C);
	delString+=char(0x2E);

	/*for(i=0;i<delString.GetLength();i++)
		delChar(&StringToDo,delString[i]);
	delString=StringToDo;
	*/

	//删除英文字符
	for(i=0;i<delString.GetLength();i++)
	{	findIndex=0;
		while(findIndex!=-1)
		{	findIndex=StringToDo.Find(char(delString[i]),findIndex);
			if(findIndex>=0)	StringToDo.Delete(findIndex);
		}
	}
	//对于空格的处理。
	findIndex=-1;
	do
	{	findIndex=StringToDo.Find(char(0x20),findIndex+1);
		if(findIndex>-1)
		{	//int kk=StringToDo.Find(char(0x20),findIndex+1);
		while(StringToDo.Find(char(0x20),findIndex+1)==findIndex+1)// (findIndex+1)==' ')
			StringToDo.Delete(findIndex+1);
		}
	}while(findIndex!=-1);


  //删除汉字
	delString="";
	delString+=char(0xA3);
	delString+=char(0xA0);	//UINT(0xA3A0);
	delString+=char(0xA1);
	delString+=char(0xA1);
	findIndex=0;
	CString toFind;
	for(i=0;i<delString.GetLength();i+=2)
	{	findIndex=-2;
		toFind="";
		toFind+=delString[i];
		toFind+=delString[i+1];
		while(findIndex!=-1)
		{	findIndex=StringToDo.Find(toFind,findIndex+2);
			if(findIndex>=0)
				do{
				tmpIndex=StringToDo.Find(toFind,findIndex+2);
				if(tmpIndex==findIndex+2)
					StringToDo.Delete(findIndex,2);
				}while(tmpIndex==findIndex+2);
		}
	}
	return StringToDo;

}

void CExtractTitle::delChar(CString *str, char ch)
{	int index=0;
	while(index!=-1)
	{	index=str->Find(ch,index);
		if(index>=0)	str->Delete(index);
	}
}

BOOL CExtractTitle::LoadLongResource(CString &str, UINT nID, LPCTSTR lpType)
{	HRSRC hRes;
	HINSTANCE hInst = AfxGetResourceHandle();
	BOOL bResult = FALSE;

	hRes = FindResource(hInst, MAKEINTRESOURCE(nID), lpType);
	if (hRes == NULL)
		TRACE1("Error: Resource %d could not be found\r\n", nID);
	else
	{
		DWORD dwSize = SizeofResource(hInst, hRes);
		if (dwSize == 0)
		{
			str.Empty();
			bResult = TRUE;
		}
		else
		{
			LPTSTR pszStorage = str.GetBufferSetLength(dwSize);

			HGLOBAL hGlob = LoadResource(hInst, hRes);
			if (hGlob != NULL)
			{
				LPVOID lpData = LockResource(hGlob);

				if (lpData != NULL)
				{
					memcpy(pszStorage, lpData, dwSize);
					bResult = TRUE;
				}

				FreeResource(hGlob);
			}
		}
	}

#ifdef _DEBUG
	if (!bResult)
		str.Format(_T("<b>Could not find string %d</b>"), nID);
#endif

	return bResult;
}

bool CExtractTitle::IsSaved()
{	return saved;
}

int CExtractTitle::save(CString fileName)
{	if(myWriteFile(fileName))
	{	saved=true;
		return 0;
	}else
		return 1;
}

///********************************************************
//                               \\\|///
//                             \\  - -  //
//                              (  @ @  )
//┏━━━━━━━━━━━━━oOOo-(_)-oOOo━━━━━━━━━━━━┓
//┃☆☆☆☆☆☆   ≈≈≈大家好!我是【王晓钰】≈≈≈  ☆☆☆☆☆☆┃
//┃№№№№$$$$№№№№$$$$№№№№$$$$№№№№$$$ ┃
//┃¤¤※※※※ ≈≈≈≈≈≈谢谢大家的厚爱≈≈≈≈≈≈※※※※¤¤┃
//┃★★★★★主页“笑语小园”:http://xiaoyuyeah.yeah.net★★★★★┃
//┃★★★★★主页“笑语小园”:http://xiaoyuyeah.126.com ★★★★★┃
//┃★★★★★☆☆电子邮件:   Garden.XiaoYu@263.net  ☆☆★★★★★┃
//┃★★★★★OICQ: 285126                               ★★★★★┃
//┃☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ┃
//┃                                   Oooo〖王晓钰〗2001年02月12日┃
//┗━━━━━━━━━━━━━━oooO---(  )━━━━━━━━━━━━┛
//                             (   )   ) /
//                              \ (   (_/
//                               \_)
///*******************************************************
/

⌨️ 快捷键说明

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