📄 tmainserver.cpp
字号:
// TMainServer.cpp : implementation file
//
#include "stdafx.h"
#include "TMainServer.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// TMainServer
TMainServer::TMainServer()
{
CurrentPageNo=1;
NextPageEnable=false;
CopySearchFlag=false;
}
CString TMainServer::GetFirstPageResult(CString HtmlSource,CString Key)
{
CString temp;
TempKey=Key;
if (HtmlSource=="") return "HtmlSourceeError";
int pos2=0;
TSearchServer* UseSearcher=new TSearchServer();
//if (MainNextPageCharacter.AnsiPos("#No=")!=0) {
if (MainNextPageCharacter.Find("#No=")!=-1) {
temp="#No=" ;
UseSearcher->NextPageCharacter=
ReplaceNo(MainNextPageCharacter,temp,CurrentPageNo);
}
//else if (MainNextPageCharacter.AnsiPos("#No-")!=0) {
else if (MainNextPageCharacter.Find("#No-")!=-1) {
temp="#No-" ;
UseSearcher->NextPageCharacter=
ReplaceNo(MainNextPageCharacter,temp,CurrentPageNo);
}
//else if (MainNextPageCharacter.AnsiPos("#No+")!=0) {
else if (MainNextPageCharacter.Find("#No+")!=-1) {
temp="#No+" ;
UseSearcher->NextPageCharacter=
ReplaceNo(MainNextPageCharacter,temp,CurrentPageNo+1);
}
else UseSearcher->NextPageCharacter=
MainNextPageCharacter;
UseSearcher->UrlAddress=MainUrlAddress;
UseSearcher->TitleFilterAndClear=MainTitleFilterAndClear;
UseSearcher->TotalCharacter=MainTotalCharacter;
UseSearcher->StartPos=MainStartPos;
UseSearcher->FinishPos=MainFinishPos;
UseSearcher->ClearLink=MainClearLink;
UseSearcher->SearchKey=MainSearchKey;
UseSearcher->LinkFilter=MainLinkFilter;
UseSearcher->NextPageBaseLink=MainNextPageBaseLink;
temp=UseSearcher->GetSearchResult(HtmlSource,TempKey);
CurrentPageNo++;
if (temp=="SearchError") {
delete UseSearcher;
return "SearchError";
}
if (temp=="CharacterError") {
delete UseSearcher;
return "CharacterError" ;
}
if (temp=="CharacterChanged") {
delete UseSearcher;
return "CharacterChanged";
}
TotalRecords=UseSearcher->TotalRecords();
NextPageEnable=UseSearcher->GetNextPageFlag();
MainNextPageUrl=UseSearcher->GetNextPageUrl();
delete UseSearcher;
return DisplayResult(temp);
}
//-----------------------------------------
CString TMainServer::GetNextPageResult(CString HtmlSource,CString Key)
{
CString temp;
if (HtmlSource=="") return "HtmlSourceeError";
int pos2=0;
TSearchServer* UseSearcher=new TSearchServer();
//if (MainNextPageCharacter.AnsiPos("#No=")!=0) {
if (MainNextPageCharacter.Find("#No=")!=-1) {
temp="#No=" ;
UseSearcher->NextPageCharacter=
ReplaceNo(MainNextPageCharacter,temp,CurrentPageNo);
}
//else if (MainNextPageCharacter.AnsiPos("#No-")!=0) {
else if (MainNextPageCharacter.Find("#No-")!=-1) {
temp="#No-" ;
UseSearcher->NextPageCharacter=
ReplaceNo(MainNextPageCharacter,temp,CurrentPageNo);
}
// else if (MainNextPageCharacter.AnsiPos("#No+")!=0) {
else if (MainNextPageCharacter.Find("#No+")!=-1) {
temp="#No+" ;
UseSearcher->NextPageCharacter=
ReplaceNo(MainNextPageCharacter,temp,CurrentPageNo+1);
}
else UseSearcher->NextPageCharacter=
MainNextPageCharacter;
UseSearcher->UrlAddress=MainUrlAddress;
UseSearcher->TitleFilterAndClear=MainTitleFilterAndClear;
UseSearcher->TotalCharacter=MainTotalCharacter;
UseSearcher->StartPos=MainStartPos;
UseSearcher->FinishPos=MainFinishPos;
UseSearcher->ClearLink=MainClearLink;
UseSearcher->SearchKey=MainSearchKey;
UseSearcher->LinkFilter=MainLinkFilter;
UseSearcher->NextPageBaseLink=MainNextPageBaseLink;
temp=UseSearcher->GetNextPage(HtmlSource,Key);
CurrentPageNo++;
if (temp=="SearchError") {
delete UseSearcher;
return "SearchError";
}
if (temp=="CharacterError") {
delete UseSearcher;
return "CharacterError" ;
}
if (temp=="CharacterChanged") {
delete UseSearcher;
return "CharacterChanged";
}
NextPageEnable=UseSearcher->GetNextPageFlag();
MainNextPageUrl=UseSearcher->GetNextPageUrl();
delete UseSearcher;
return DisplayResult(temp);
}
//---------------------------------------------------------------------------
CString TMainServer::ReplaceNo(CString temp,CString str, int m)
{
int pos=str.Find("="); //int pos=str.AnsiPos("=");
if (pos!=-1) { //if (pos!=0)
pos=temp.Find(str); //pos=temp.AnsiPos(str);
CString ss=temp;
ss.Delete(0,pos+str.GetLength()-1); //ss=ss.Delete(1,pos+str.Length()-1);
pos=ss.Find("@"); //pos=ss.AnsiPos("@");
ss=ss.Mid(0,pos); //ss=ss.SubString(1,pos-1);
m=m*atoi(ss)+1; //m=m*atoi(ss.c_str())+1;
str=str+ss;
}
pos=temp.Find(str); //pos=temp.AnsiPos(str);
CString ssp;
ssp.Format(_T("%d"),m);
temp.Insert(pos,ssp); //temp=temp.Insert(IntToStr(m),pos);
pos=temp.Find(str); //pos=temp.AnsiPos(str);
// temp.Delete(pos-1,str.GetLength());
temp.Delete(pos,str.GetLength());
//temp=temp.Delete(pos,str.Length());
pos=temp.Find(str); //pos=temp.AnsiPos(str);
if (pos!=-1) { //if (pos!=0)
CString ssp;
ssp.Format(_T("%d"),m);
temp.Insert(pos,ssp); //temp=temp.Insert(IntToStr(m),pos);
pos=temp.Find(str); //pos=temp.AnsiPos(str);
// temp.Delete(pos-1,str.GetLength());
temp.Delete(pos,str.GetLength());
//temp=temp.Delete(pos,str.Length());
}
return temp;
}
CString TMainServer::DisplayResult(CString temp)
{
CString templink,tempbrief="",tempclear="",result="";
tempclear=MainClearLink;
int pos=tempclear.Find("$"); //pos=tempclear.AnsiPos("$");
// if (pos!=0) tempclear=tempclear.Delete(1,pos);
if (pos!=-1) tempclear.Delete(0,pos+1);
pos=tempclear.Find("@"); // pos=tempclear.AnsiPos("@");
//if (pos!=0) tempclear=tempclear.Delete(pos,1);
if (pos!=-1)
tempclear.Delete(pos,1);
// tempclear.Delete(pos-1,1);
pos=tempclear.Find("&"); //pos=tempclear.AnsiPos("&");
//if (pos!=0) tempclear=tempclear.Delete(pos,1);
if (pos!=-1) tempclear.Delete(pos,1);
pos=tempclear.Find("#"); //pos=tempclear.AnsiPos("#");
// if (pos!=0) tempclear=tempclear.Delete(pos,1);
if (pos!=-1)
tempclear.Delete(pos,1);
// tempclear.Delete(pos-1,1);
int n=0;
pos=temp.Find('\n'); //pos=temp.AnsiPos('\n');
if(tempclear.IsEmpty()) tempclear = "null";
while (pos>-1) { //while (pos>0)
templink=temp.Mid(0,pos+1); //templink=temp.SubString(1,pos);
if (n==3) n=0;
if (n==0) {
// if ((result.AnsiPos(templink)!=0)||(templink.AnsiPos(tempclear)!=0)||
// ((templink.AnsiPos("http")==0)&&(templink.AnsiPos("HTTP")==0)&&
// (templink.AnsiPos("Http")==0))) {
if ((result.Find(templink)!=-1)||(templink.Find(tempclear)!=-1)||
((templink.Find("http")==-1)&&(templink.Find("HTTP")==-1)&&
(templink.Find("Http")==-1))) {
temp.Delete(0,pos+1); //temp=temp.Delete(1,pos);
pos=temp.Find('\n'); //pos=temp.AnsiPos('\n');
temp.Delete(0,pos+1); //temp=temp.Delete(1,pos);
pos=temp.Find('\n'); //pos=temp.AnsiPos('\n');
temp.Delete(0,pos+1); //temp=temp.Delete(1,pos);
pos=temp.Find('\n'); //pos=temp.AnsiPos('\n');
n=0;
continue;
}
}
result=result+templink;
n++;
temp.Delete(0,pos+1); //temp=temp.Delete(1,pos);
pos=temp.Find('\n'); //pos=temp.AnsiPos('\n');
}
return result;
}
/////////////////////////////////////////////////////////////////////////////
// TMainServer message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -