//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//--------------------------------------------------------------
RzProgressStatus1->Percent=0; //进度完成
//-------------------------------------------------------------
if(Memo3->Lines->Count<2)
return;
//模块扫描
AnsiString MKstr=ComboBox1->Text;
int MKkind=ComboBox1->ItemIndex;
//清空所有图表显示
TControl *Control;
for(int i=ScrollBox1->ControlCount;i>0;i--)
{
Control=ScrollBox1->Controls[i-1];
delete Control;
Control=NULL;
}
//验证N期彩果
int Cnum=RzSpinEdit1->EditText.ToInt();
//验证N个模块
//Form2->RzListView3->Refresh();
int MKnum=Form2->RzListView3->Items->Count;
if(MKnum==0)
{
Form2->RzListView3->Clear();
TStringList* Strings = new TStringList;
TStringList* TJs = new TStringList;
TJs->Delimiter='#';
Strings->LoadFromFile(ExtractFilePath(ParamStr(0))+"ml.tj");
TListItem *pItem=0;
for(int n=0; n<Strings->Count; n++)
{
TJs->DelimitedText=Strings->Strings[n];
//
pItem=Form2->RzListView3->Items->Add();
pItem->Caption=TJs->Strings[1];
pItem->SubItems->Add(TJs->Strings[2]);
pItem->SubItems->Add(TJs->Strings[3]);
pItem->SubItems->Add(TJs->Strings[4]);
if(TJs->Strings[0]=="Y")
pItem->Checked=true;
else
pItem->Checked=false;
}
//
delete Strings;
delete TJs;
MKnum=Form2->RzListView3->Items->Count;
}
//--------------------------------------------------------------
RzProgressStatus1->Percent=10; //进度完成
//-------------------------------------------------------------
//显示N个模块数
int XSnum=0;
for(int Ci=0;Ci<MKnum;Ci++)
{
if( Form2->RzListView3->Items->Item[Ci]->Checked)
{
XSnum++;
}
}
if(XSnum==0)
return;
//定义显示N个模块历期的走势
TRzEdit **Etxt=new TRzEdit *[XSnum ];
//定义显示N个图表的走势
TChart **serRL=new TChart *[XSnum ];
//------------------------
//装入彩果
//------------------------
TStringList *Strings=new TStringList;
Strings->AddStrings(Form1->Memo3->Lines); //缓冲载入到字符链表
int CGsum=Strings->Count; //彩果期数
int CGsumcz=0;
//查找验证到某一期
for (int i = 0; i < CGsum; i++)//为什么要等于CGsum,主要是你要预测下一期
{
if(Strings->Strings[i].Length()) //如果不为空
{
if(!Strings->Strings[i].Pos("="))
CGsumcz++; // 验证到此一期为止
else
break;//验证到止为止
}
}
//
//--------------------------------------------------------------
RzProgressStatus1->Percent=20; //进度完成
//-------------------------------------------------------------
//定义图表线条
TLineSeries* Series1;
int XSi=0;
int FZtz[10];
for(int Ci=MKnum-1;Ci>=0;Ci--)
{
if(Form2->RzListView3->Items->Item[Ci]->Checked) //模块要显示
{
//分组特征码
AnsiString TZM= Form2->RzListView3->Items->Item[Ci]->SubItems->Strings[2];
memset(FZtz,0,sizeof(int)*10);
int FZ=0;
for(int Ti=1;Ti<=TZM.Length();Ti++)
{
if(TZM.SubString(Ti,1)==",")
FZ++;
else
{
FZtz[TZM.SubString(Ti,1).ToInt() ]=FZ;
}
}
//创建图表显示
serRL[XSi]=new TChart(this);
serRL[XSi]->Parent=ScrollBox1;
serRL[XSi]->Align=alTop;
serRL[XSi]->Height=145; //高度
serRL[XSi]->View3D=false; //关掉3D显示
// serRL[XSi]->Title->Caption="模块[ "+AnsiString(Ci)+" ] -"+Form2->RzListView3->Items->Item[Ci]->SubItems->Strings[0]; //定义标题
serRL[XSi]->Margins->Top=0;
serRL[XSi]->Margins->Bottom=0;
serRL[XSi]->Margins->Right=0;
serRL[XSi]->Margins->Left=0;
serRL[XSi]->MarginLeft=0;
serRL[XSi]->MarginBottom=0;
serRL[XSi]->MarginRight=2;
serRL[XSi]->MarginTop=0;
serRL[XSi]->Legend->Visible=false; //关掉图表右边的显示标签框
//serRL[XSi]->Legend->Items->Clear();
//serRL[XSi]->Legend->Items->Add()
serRL[XSi]->LeftAxis->Increment=1; //左坐标的标尺单元长度
serRL[XSi]->MarginTop=10;
//创建走势线
// for(int i=Cnum-1;i>=0;i--)
// {
Series1 = new TLineSeries(serRL[XSi]);
Series1->ParentChart=serRL[XSi];
serRL[XSi]->AddSeries(Series1);
serRL[XSi]->SeriesList->Items[0]->Clear();
serRL[XSi]->SeriesList->Items[0]->Active=true;
serRL[XSi]->SeriesList->Items[0]->Visible=true;
serRL[XSi]->SeriesList->Items[0]->Pen->Visible=true;
serRL[XSi]->SeriesList->Items[0]->Pen->Width=1;
serRL[XSi]->SeriesList->Items[0]->Pen->Style=psSolid;
serRL[XSi]->SeriesList->Items[0]->Pen->Color= 6711039;
serRL[XSi]->SeriesList->Items[0]->Pen->SmallSpace=1;
serRL[XSi]->SeriesList->Items[0]->Pen->Show();
serRL[XSi]->SeriesList->Items[0]->SeriesColor=clRed;
//------------------------------------------------------------------
int NZi=0;
int SZtmp;
AnsiString TZstr=" 模块[ "+AnsiString(Ci+1)+" ] - "+MKstr+" 特征码:["+TZM+"] "+Form2->RzListView3->Items->Item[Ci]->SubItems->Strings[0]+" 特征串: ";
for (int Gi = CGsumcz-Cnum; Gi < CGsumcz; Gi++)//为什么要等于CGsum,主要是你要预测下一期
{
if(!Strings->Strings[Gi].Pos("="))
{
if(Strings->Strings[Gi].Length()) //如果不为空
{
SZtmp=RightStr(Strings->Strings[Gi],3).ToInt();
if(MKkind==0) //扫描个位
{
serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[SZtmp%10],FZtz[SZtmp%10],clRed);
TZstr+=FZtz[SZtmp%10];
}
else if(MKkind==1) //扫描十位
{
serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[SZtmp%100/10],FZtz[SZtmp%100/10],clRed);
TZstr+=FZtz[SZtmp%100/10];
}
else if(MKkind==2) //扫描百位
{
serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[SZtmp/100],FZtz[SZtmp/100],clRed);
TZstr+=FZtz[SZtmp/100];
}
else if(MKkind==3) //和尾扫描
{
serRL[XSi]->SeriesList->Items[0]->AddXY(NZi,FZtz[(SZtmp/100+SZtmp/10%10+SZtmp%10)%10],FZtz[(SZtmp/100+SZtmp/10%10+SZtmp%10)%10],clRed);
TZstr+=FZtz[(SZtmp/100+SZtmp/10%10+SZtmp%10)%10];
}
NZi++;
}
}
else
break;
}
//显示特征串
//创建特征值显示
Etxt[XSi]=new TRzEdit(this);
Etxt[XSi]->Parent=ScrollBox1;
Etxt[XSi]->Align=alTop;
Etxt[XSi]->Height=20;
Etxt[XSi]->Text=TZstr;
Etxt[XSi]->Font->Color=clRed;
//serRL[i]->SeriesList->Items[0]->Style=TLineSeries;//TBarSeries;
// int Sx=0;
// for(int Si=Memo3->Lines->Count-1;Si>Memo3->Lines->Count-Cnum ;Si--)
// {
// if( !Memo3->Lines->Strings[Si].Pos("="))
// {
// serRL[XSi]->SeriesList->Items[0]->AddXY(Sx,RightStr(Memo3->Lines->Strings[Si],1).ToInt(),RightStr(Memo3->Lines->Strings[Si],1).ToInt(),clRed);
// Sx++;
// }
// }
//------------------------------------------------------------------
serRL[XSi]->SeriesList->Items[0]->ShowInLegend=false; //关掉显示标签
serRL[XSi]->SeriesList->Items[0]->Marks->Visible=true;
serRL[XSi]->SeriesList->Items[0]->Marks->Symbol->Visible=false;
//
serRL[XSi]->SeriesList->Items[0]->Marks->Arrow->Style=psCircle ;
serRL[XSi]->SeriesList->Items[0]->Marks->ArrowLength=4;
serRL[XSi]->SeriesList->Items[0]->Marks->Arrow->Color=clRed;
serRL[XSi]->SeriesList->Items[0]->Marks->Symbol->Transparent=true;
serRL[XSi]->SeriesList->Items[0]->ShowInEditor=false;
Series1->Marks->Visible=true;
//serRL[i]->Legend->CheckBoxes=false;
//}
XSi++;//显示模块加1
}
//--------------------------------------------------------------
RzProgressStatus1->Percent=20+(MKnum-Ci)*80/MKnum; //进度完成
//-------------------------------------------------------------
}
//-----------------------------------------------------------
//时钟计算
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
//--------------------------------------------------------------
RzProgressStatus1->Percent=100; //进度完成
//-------------------------------------------------------------
RzStatusPane1->Caption =
"彩果更新完成 ";
RzStatusPane2->Caption =
"耗时:"+FloatToStrF(dfTim,ffFixed,4,3)+" 秒 ";
// 清除临时表
delete Strings;