📄 fixlogfilesthread1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Fix_ServerLogs1.h"
#include "FixLogFilesThread1.h"
#include "Fix_InfoMuster1.h"
#include "Fix_InfoRelacing1.h"
#include <stdlib.h>
#include <stdio.h>
#pragma package(smart_init)
//---------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall TFixLogFilesThread::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------
__fastcall TFixLogFilesThread::~TFixLogFilesThread()
{
if(usermodebuf!=NULL)
FreeModebuf((TFIX_DEFMODE_INFO*)usermodebuf);
}
__fastcall TFixLogFilesThread::TFixLogFilesThread(void* thwnd,void* tstream,void* tinfobuf,void* tshowstatus,bool CreateSuspended,int fixtype)
: TThread(CreateSuspended)
{
fixselecttype=fixtype;
msghwnd=thwnd;
msgstream=(TStream*)tstream;
msginfobuf=tinfobuf;
msgshowstatus=tshowstatus;
exits=false;
usermodebuf=NULL;
lasttime="";
Priority=tpHigher;//tpNormal;//tpLower;//st;//tpLower;
//Priority=tpLowest;//tpLower;
}
//---------------------------------------------------------------------------
AnsiString TFixLogFilesThread::getiisdata(CFIELD_DEFINE* finfo,CLOGS_FIX_BUF_INFO* info,AnsiString buf,int ftype,TDateTime standtime)
{
AnsiString tmps="";
int kk=0;
int kk1=0;
AnsiString cks="";
AnsiString tims;
for(int mi=1;mi<buf.Length();mi++)
{
bool bz=true;
if(buf[mi]==char(0x20))
{
bz=false;
int i=tmps.Length();
if(i>1)
{
if(tmps[i]==char(0x2c))
tmps=tmps.Delete(i,1);
}
}
else if(buf[mi]==char(0x0a))
{
bz=false;
int i=tmps.Length();
if(i>1)
{
if(tmps[i-1]==char(0x2c))
tmps=tmps.Delete(i-1,2);
}
}
else
tmps+=buf[mi];
if(!bz)
{
kk1++;
if(kk1==3)
tims=tmps;
else
{
if(kk1==4)
tmps=tims+" "+tmps;
info->field[kk]=tmps;
if(finfo->fieldname[kk].Pos("cs-uri")>0)
cks+=tmps;
kk++;
}
tmps="";
}
}
lasttime=info->field[2];
return cks;
}
AnsiString TFixLogFilesThread::getw3cdata(CFIELD_DEFINE* finfo,CLOGS_FIX_BUF_INFO* info,AnsiString buf,int ftype,TDateTime standtime)
{
AnsiString cks="";
for(int mi=0;mi<30;mi++)
{
if(!finfo->fieldusebz[mi])
continue;
int i=buf.Pos(char(0x20));
AnsiString s=buf.SubString(1,i-1);
buf=buf.Delete(1,i);
if(finfo->fieldname[mi]=="datetime")
{
if(finfo->fieldstr.SubString(8,4)=="time")
{
i=buf.Pos(char(0x20));
AnsiString s1=buf.SubString(1,i-1);
buf=buf.Delete(1,i);
s=s+" "+s1;
}
lasttime=s;
}
info->field[mi]=s;
if(finfo->fieldname[mi].Pos("cs-uri")>0)
cks+=s;
}
return cks;
}
AnsiString TFixLogFilesThread::getnscadata(CFIELD_DEFINE* finfo,CLOGS_FIX_BUF_INFO* info,AnsiString buf,int ftype,TDateTime standtime)
{
AnsiString cks="";
int i=buf.Pos(" ");
info->field[0]=buf.SubString(1,i-1);
buf=buf.Delete(1,i);
i=buf.Pos(" ");
info->field[1]=buf.SubString(1,i-1);
buf=buf.Delete(1,i);
i=buf.Pos(" ");
info->field[2]=buf.SubString(1,i-1);
buf=buf.Delete(1,i);
i=buf.Pos("]");
info->field[3]=fixncsatime(buf.SubString(1,i),"datetime1");
buf=buf.Delete(1,i+2);
lasttime=info->field[3];
i=buf.Pos("\" ");
AnsiString s=buf.SubString(1,i-1);
buf=buf.Delete(1,i+1);
i=s.Pos(" ");
info->field[4]=s.SubString(1,i-1);
s=s.Delete(1,i);
AnsiString s1="";
int len=s.Length();
for(int k=len;k>0;k--)
{
AnsiString s2=s.SubString(k,1);
if(s2==" ")
break;
else
{
s1=s2+s1;
s=s.Delete(k,1);
}
}
cks=s;
i=s.Pos("?");
if(i>0)
{
info->field[5]=s.SubString(1,i-1);
s=s.Delete(1,i);
info->field[6]=s;
}
else
info->field[5]=s;
info->field[7]=s1;
i=buf.Pos(" ");
info->field[8]=buf.SubString(1,i-1);
buf=buf.Delete(1,i);
info->field[9]=buf;
return cks;
}
AnsiString TFixLogFilesThread::getapacheerdata(CFIELD_DEFINE* finfo,CLOGS_FIX_BUF_INFO* info,AnsiString buf,int ftype,TDateTime standtime)
{
AnsiString cks="";
int i=buf.Pos("]");
info->field[0]=fixncsatime(buf.SubString(1,i),"datetime2");
buf=buf.Delete(1,i);
lasttime=info->field[0];
buf=buf.Trim();
i=buf.Pos("]");
info->field[1]=buf.SubString(2,i-2);
buf=buf.Delete(1,i);
buf=buf.Trim();
i=buf.Pos("]");
AnsiString s=buf.SubString(2,i-2);
buf=buf.Delete(1,i);
buf=buf.Trim();
i=s.Pos(" ");
s=s.Delete(1,i);
info->field[2]=s;
info->field[3]=buf;
cks=buf;
return cks;
}
AnsiString TFixLogFilesThread::getselfdata(CFIELD_DEFINE* finfo,CLOGS_FIX_BUF_INFO* info,AnsiString buf,int ftype,TDateTime standtime)
{
AnsiString cks="";
AnsiString tmps=finfo->fieldstr;
int fcn=0;
while(1)
{
if(tmps.IsEmpty() || (fcn>29) || buf.IsEmpty())
break;
int ln=tmps.Pos("%");
if(ln>1)
buf=buf.Delete(1,ln-1);
tmps=tmps.Delete(1,ln);
ln=tmps.Pos("%");
AnsiString sn;
if(ln>0)
{
sn=tmps.SubString(1,ln-1);
tmps=tmps.Delete(1,ln-1);
}
else
{
sn=tmps;
tmps="";
}
sn=sn.Trim();
if(sn.IsEmpty())
break;
AnsiString fgs="";
while(1)
{
char c0=sn[sn.Length()];
bool dbz=false;
if((!((c0==')') || (c0=='-') || ((c0>='A') && (c0<='Z')) || ((c0>='a') && (c0<='z')) || ((c0>='0') && (c0<='9')))))
{
dbz=true;
sn=sn.Delete(sn.Length(),1);
AnsiString xxx=c0;
fgs=xxx+fgs;
}
if(sn.IsEmpty())
break;
c0=sn[1];
if((!((c0==')') || (c0=='-') || ((c0>='A') && (c0<='Z')) || ((c0>='a') && (c0<='z')) || ((c0>='0') && (c0<='9')))))
{
dbz=true;
sn=sn.Delete(1,1);
}
if(sn.IsEmpty() || !dbz)
break;
}
AnsiString buft="";
if(tmps.IsEmpty())
{
buft=buf;
buf="";
}
else
{
if(fgs.IsEmpty())
fgs=" ";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -