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

📄 stocktel.cpp

📁 股票分析系统
💻 CPP
字号:
#include "stockTel.h"#include <fstream>using namespace std;ZTel::ZTel(ZTel* tel){    body=NULL;    this->length=0;    this->setLength(tel->getLength());    for (int i=0;i<length;i++)    {	this->body[i]=*(tel->getBody()+i);    }}ZTel::ZTel(int length,unsigned int command){//    ZTel();    body=NULL;    this->length=0;    Head[0]=0xfd;Head[1]=0xfd;Head[2]=0xfd;Head[3]=0xfd;    setLength(length);//    body[0]= *((char*)((unsigned char*)&command));    if(length<4)return;    *((unsigned int* )body)=command;}ZTel::ZTel(int length){//    ZTel();    body=NULL;    this->length=0;    Head[0]=0xfd;Head[1]=0xfd;Head[2]=0xfd;Head[3]=0xfd;    setLength(length);}void ZTel::setLength(int length){    if(this->length!=0)    {	delete[](body);	body=NULL;    }    this->length=length;        if(length==0)return;    stringstream ss;    ss.width(8);    ss.fill('0');    ss <<hex <<length;    ss >> &(Head[4]);    Head[12]=0;    body=new char[length];    for (int i=0;i<length;i++)body[i]=0;}ZTel::ZTel(){    body=NULL;    this->length=0;}    ZTel::~ZTel(){    if(body!=NULL)delete[](body);}    char* ZTel::getBody(){    return(body);}int ZTel::getLength(){    return(length);}char* ZTel::getHead(){    return(Head);}unsigned int ZTel::getCommand(){    if(body==NULL)return(0xffffffff);    return(*((unsigned int*)(&body[0])));}void ZTel::setCommand(unsigned int c){    if(body==NULL)return;    *((unsigned int*)getBody())=c;    return;}void ZTel::send(QSocket* socket){    if(socket==NULL)return;    if(body==NULL)return;//    socket->writeBlock(Head,13);  //  socket->writeBlock(body,length);        char* buf=new  char[13+length];    for(int i=0;i<13;i++) buf[i]=Head[i];    for(int i=13;i<13+length;i++)buf[i]=body[i-13];    socket->writeBlock(buf,13+length); //   socket->flush();}bool ZTel::receive(QSocket* socket){    static int rece=0;    int i;    for(i=rece;i<13;i++)    {	if(socket->bytesAvailable()<1)return(false);	rece=rece+socket->readBlock(Head+rece,1);		if((rece==1)&&(((unsigned char)Head[0])!=0xFD))	{	    rece=0;return(false);	}	if((rece<=4)&&(rece>1)&&(((unsigned char)Head[rece-1])!=0xFD))	{	    for(int j=0;j<rece-1;j++)Head[j]=Head[j+1];   rece=rece-1;  return(false);	}	if((rece>4)&&(!isxdigit(Head[rece-1]))&&(rece<13))	{	    for(int j=0;j<rece-1;j++)Head[j]=Head[j+1]; 	    rece=rece-1;	    return(false);	}		if((rece==13)&&((unsigned char)Head[12]!=0))	{    	    for(int j=0;j<rece-1;j++)Head[j]=Head[j+1]; 	    rece=rece-1;	    return(false);	}    }    if(rece==13)    {	int l;	stringstream ss;	ss<<  &Head[4];	if(ss >> hex >>l )setLength(l);    }	    for(i=rece-13;i<length;i++)    {	if(socket->bytesAvailable()<1)return(false);	rece=rece+socket->readBlock(body+rece-13,1);    }    rece=0;    return(true);  	}    string  ZTel::printTel(){    string s,t;    int i;    for (i=0;i<13;i++)    {	unsigned int j= *((unsigned char*)&(Head[i]));	stringstream ss;	ss.width(2);	ss.fill('0');	ss<< hex <<j;	ss >> t;	s=s+" "+t;    }        for (i=0;i<length;i++)    {	unsigned int j= *((unsigned char*)&(body[i]));	stringstream ss;	ss.width(2);	ss.fill('0');	ss<< hex <<j;	ss >> t;	s=s+" "+t;    }    return(s);}void  ZTel::writeToFile(string FileName){    ofstream TelOut(FileName.c_str());    TelOut.write(getHead(),13);    TelOut.write(getBody(),getLength());    TelOut.close();	   }	   ZLoginTel::ZLoginTel(string name,string pass):ZTel(0x80,0x0a){    unsigned short ln=name.size();    unsigned short lp=pass.size();    *((unsigned short *)(&body[1]))=ln;    stringstream ss;    ss<<name;    ss>>&(body[3]);    *((unsigned short *)(&(body[3+ln])))=lp;    stringstream ss1;    ss1<<pass;    ss1>>((unsigned char*)(&(body[5+ln])));}string ZLoginBackTel::getMessage(){    if(length<3)return(string(""));    return(string(&body[1]));}string ZBBTel::getText(){    return(string(&body[0x20]));}ZGetCodeTel:: ZGetCodeTel():ZTel(0x80,0x00000121){    body[4]=06;    string s="E013.56D013.04D022.08D043.35D063.74";    stringstream ss;    ss<<s;    ss>>&body[13];	     } ZCodeTel::ZCodeTel(ZCodeTel* tel):ZTel((ZTel*) tel){}ZNameCode* ZCodeTel::findByCode(string code){    for(int i=0;i<getRecords();i++)    {	if(code==getRecord(i)->getCode())	    return(getRecord(i));    }    return(NULL);}ZNameCode* ZCodeTel::getCodeData(){    if(length==0)return(NULL);    return((ZNameCode*)(body+0x01c8));    }int  ZCodeTel::getRecords(){    if(length==0)return(0);    return((length-0x01C8)/sizeof(ZNameCode));}ZNameCode* ZCodeTel::getRecord(int index){    if(index>getRecords())return(NULL);    return(getCodeData()+index);}ZNameCode* ZCodeTel::findNearBy(string s){    if((s[0]<='9') && (s[0]>='0'))   //is digist()    {	for(int i=0;i<getRecords();i++)	{	    string ts=(getCodeData()+i)->getCode();	    if(ts.find (s,0)==0)return(getRecord(i));	}	    }    else    {	for(int i=0;i<getRecords();i++)	{	    string ts=(getCodeData()+i)->getPinYin();	    if(ts.find (s,0)==0)return(getRecord(i));	}    }    return(NULL);}string ZNameCode::getName(){    string re(8,' ');    for(int i=0;i<8;i++)re[i]=Name[i];    return(re);}string ZNameCode::getCode(){    string re(6,' ');    for(int i=0;i<6;i++)re[i]=Code[i];    return(re);}string ZNameCode::getPinYin(){    string re(4,' ');    for(int i=0;i<4;i++)re[i]=PinYin[i];    return(re);}unsigned char ZNameCode::getStyle(){    return(style);}ZNameCodeTable::ZNameCodeTable(int records,ZNameCode* data){    this->records=records;    this->data=new ZNameCode[records];//    cerr<<records<<endl;    unsigned char *a,*b;    a=(unsigned char* )this->data; b=(unsigned char*) data;    for(unsigned int i=0;i<records*sizeof(ZNameCode);i++)     {	*a=*b;	a++;b++;    }    }int ZNameCodeTable::findByCode(string code){    for(int i=0;i<records;i++)    {	if((data+i)->getCode()==code)	{	    return(i);	}    }    return(0);}int ZNameCodeTable::findNearBy(string s){    if((s[0]<='9') && (s[0]>='0'))   //is digist()    {	for(int i=0;i<records;i++)	{	    string ts=(data+i)->getCode();	    if(ts.find (s,0)==0)return(i);	}	    }    else    {	for(int i=0;i<records;i++)	{	    string ts=(data+i)->getPinYin();	    if(ts.find (s,0)==0)return(i);	}    }    return(0);}unsigned char ZNameCodeTable::getStyleByCode(string code){    int i=findByCode(code);    return((data+i)->getStyle());}string ZNameCodeTable::getNameByCode(string code){    int i=findByCode(code);    return((data+i)->getName());}ZGetDaysTel::ZGetDaysTel(string Code,unsigned char style):ZTel(0x80){    for(int i=0;i<6;i++)    {	body[i+7]=Code[i];    }    if((style==0x10)||(style==0x20))    {	setCommand(0x00030920);    }    else    {	setCommand(0x00020920);    }    body[4]=0x18;		//起始记录    body[5]=0xff;		//结束记录    body[6]=style;    }ZGetMinutesTel::ZGetMinutesTel(string code,unsigned char style)    :ZTel(0x80,0x00010600) //0x00010401){    for(int i=0;i<6;i++)    {	body[i+7]=code[i];    }    body[4]=0x01;    body[5]=0x00;    body[6]=style;}ZGetMinutesTel::ZGetMinutesTel(ZNameCode* currentStock):ZTel(0x80){    switch(currentStock->getStyle())    {	case 0x10:	case 0x20:	    setCommand(0x00010600);	    break;	default:	    setCommand(0x00010401);	    }    string code=currentStock->getCode();    for(int i=0;i<6;i++)    {	body[i+7]=code[i];    }    body[4]=0x01;    body[5]=0x00;    body[6]=currentStock->getStyle();}int ZDaysTel::getDays(){    if(length==0)return(0);    if(isIndexDaysTel())return(*((unsigned short int*)(&body[0x6E])));    else if(isStockDaysTel())return(*((unsigned short int*)(&body[0x156])));    else return(0);}ZDaysStruct* ZDaysTel::getDay(int i){    if(length==0)return(NULL);    if(isIndexDaysTel()) return(((ZDaysStruct*)(&body[0x070]))+i);    else if(isStockDaysTel()) return(((ZDaysStruct*)(&body[0x08E0]))+i);    else return(NULL);}ZMinutesStruct* ZDaysTel::getMinute(int i){    if(length==0)return(NULL);       return(((ZMinutesStruct*)(&body[0x158]))+i);   }int ZDaysTel::getMinutes(){    if(length==0)return(0); //   return(0xEF);    return(*((unsigned short int*)(&body[0x154])));}int ZMinutesTel::getMinutes(){    int l=getLength();    if(isStockMinutesTel())  return((l-0x160)/8);    if(isIndexMinutesTel()) return (*((unsigned short int*)&body[0x6E]));    return(0);}ZMinutesStruct* ZMinutesTel::getMinute(int i){    if(isStockMinutesTel()) return(((ZMinutesStruct*)( &body[0x160]))+i);    if(isIndexMinutesTel()) return((ZMinutesStruct*)(&body[0x070])+i);    return(NULL);}ZGetOldMinutesTel::ZGetOldMinutesTel(string code,unsigned char style,unsigned int date)    :ZTel(0x80,0x00030f00){    for(int i=0;i<6;i++)    {	body[i+7]=code[i];    }    *((unsigned int*)(&body[13]))=date;    body[4]=0x02;    body[5]=0x00;    body[6]=style;}int ZOldMinutesTel::getMinutes(){    return (*((unsigned short int*)&body[0x24]));}ZOldMinutesStruct*  ZOldMinutesTel::getMinute(int i){    return(((ZOldMinutesStruct*)( &body[0x26]))+i);    }

⌨️ 快捷键说明

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