📄 extracttitle.cpp
字号:
//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 + -