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

📄 thirdmsg.cpp

📁 简单报文模拟发送
💻 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 + -