?? thirdmsg.cpp
字號:
#include "StdAfx.h"
#include "ThirdMsg.h"
#include "Data.h"
ThirdMsg::ThirdMsg(char* src,char* dest)
:MsgHeader(src,dest)
{
}
ThirdMsg::~ThirdMsg(void)
{
for(vector<CData*>::iterator ite=m_vdata.begin();ite!=m_vdata.end();ite++)
{
CData* d=(CData*)(*ite);
delete d;
}
m_vdata.clear();
}
char* ThirdMsg::toString(char** p)
{
char* temp=GetDataString();
char* str=NULL;
MsgHeader::toString(&str);
if(NULL==temp)
{
*p=new char[strlen(str)+1];
strcpy(*p,str);
delete[] str;
}else
{
*p=new char[strlen(temp)+strlen(str)+1];
strcpy(*p,str);
strcat(*p,temp);
delete[] str;
delete[] temp;
}
return *p;
}
void ThirdMsg::AddData(CData* data)
{
m_vdata.push_back(data);
}
char* ThirdMsg::GetDataString()
{
char* p=NULL;
for(vector<CData*>::iterator ite=m_vdata.begin();ite!=m_vdata.end();++ite)
{
char* str=NULL;
(*ite)->toString(&str);
if(NULL==p)
{
p=str;
}else
{
char* temp=p;
p=new char[strlen(temp)+1+strlen(str)+1];
if(NULL!=p)
{
strcpy(p,temp);
strcat(p,str);
}
delete[] temp;
delete[] str;
}
}
return p;
}
bool ThirdMsg::savetofile(const char *path)
{
try
{
char str[512]={0};
sprintf(str,"%d",m_nMsgID);
WritePrivateProfileString("Header","messageID",str,path);
WritePrivateProfileString("Header","SourseAddress",m_strSrcAddr,path);
WritePrivateProfileString("Header","DestinationAddress",m_strDestAddr,path);
vector<CData *>::iterator p=m_vdata.begin();
vector<CData *>::size_type i=1;
while(p!=m_vdata.end())
{
char *sp=NULL;
sprintf(str,"%s%d","data",i);
WritePrivateProfileString("Data",str,(*p)->getstrData(),path);
i++;
sprintf(str,"%s%d","data",i);
char str1[512]={0};
itoa((*p)->getFirst(),str1,10);
WritePrivateProfileString("Data",str,str1,path);
i++;
sprintf(str,"%s%d","data",i);
char str2[512]={0};
itoa((*p)->getSecond(),str2,10);
WritePrivateProfileString("Data",str,str2,path);
i++;
p++;
delete[] sp;
}
return true;
}catch(...)
{
return false;
}
}
MsgHeader* ThirdMsg::loadfromfile(const char *path)
{
char srs[512]={0};
GetPrivateProfileString("Header","SourseAddress","",srs,512,path);
char des[512]={0};
GetPrivateProfileString("Header","DestinationAddress","",des,512,path);
char pstr[512]={0};
GetPrivateProfileString("Data","data1","",pstr,512,path);
int i=1;
ThirdMsg *t_msg=new ThirdMsg(srs,des);
while (strlen(pstr)!=0)
{
memset(pstr,0,512);
char n_data1[512]={0};
sprintf(n_data1,"%s%d","datat",i);
i++;
char n_data2[512]={0};
sprintf(n_data2,"%s%d","data",i);
i++;
char n_data3[512]={0};
sprintf(n_data3,"%s%d","data",i);
i++;
GetPrivateProfileString("Data",n_data1,"",n_data1,512,path);
GetPrivateProfileString("Data",n_data2,"",n_data2,512,path);
GetPrivateProfileString("Data",n_data3,"",n_data3,512,path);
CData *p_data=new CData(n_data1,atoi(n_data2),atoi(n_data3));
t_msg->AddData(p_data);
sprintf(n_data1,"%s%d","data",i);
GetPrivateProfileString("Data",n_data1,"",pstr,512,path);
}
MsgHeader *msg=dynamic_cast<MsgHeader*>(t_msg);
return msg;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -