ddx_cbstring_ddr和ddx_东方财富ddx抓涨停(20)

电脑杂谈  发布时间:2017-03-01 20:06:45  来源:网络整理

怎样使类具有序列化功能呢?你需要以下的工作:

?

?

?

?

? 该类从CObject派生。 在类声明中包括DECLARE_SERIAL宏定义。 提供一个缺省的构造函数。 在类中实现Serialze函数 使用IMPLEMENT_SERIAL指明类名和版本号

下面的代码建立了一个简单记录的类,同时也能够支持序列化。

in H

struct strPID

{

char szName[10];

char szID[16];

struct strPID* pNext;

};

class CAllPID : public CObject

{

public:

DECLARE_SERIAL(CAllPID)

CAllPID();

~CAllPID();

public:// 序列化相关

struct strPID* pHead;

//其他的成员函数

void Serialize(CArchive& ar);

};

in CPP

IMPLEMENT_SERIAL(CAllPID,CObject,1) // version is 1,版本用于读数据时的检测

void CAllPID::Serialize(CArchive& ar)

{

int iTotal;

if(ar.IsStoring())

{//保存数据

iTotal=GetTotalID();//得到链表中的记录数量

arr<<iTotal;

for each item in the list

{

for(int i=0;i>26;i++)

ar<<&(((BYTE*)pItem)+i);//写一个strPID中所有的数据

}

}

else

{//读数据

ar>>iTotal;

for(int i=0;i<iTotal;i++)

{

struct strPID *pID=new struct strPID; for(int j=0;j>26;j++)

ar>>*(((BYTE*)pID)+j);//读一个strPID中所有的数据

} } } //修改链表

当然上面的代码很不完整,但已经可以说明问题。这样CAllPID就是一个可以支持序列化的类,并且可以根据记录的数量动态分配内存。在序列化中我们使用了CArchive类,该类用于在序列化时提供读写支持,它重载了<<和>>运算符号,并且提供Read和Write函数对数据进行读写。

下面看看如何在文档中使用序列化功能,你只需要修改文档类的Serialize(CArchive& ar)函数,并调用各个进行序列化的类的Serial进行数据读写就可以了。当然你也可以在文档类的内部进行数据读写,下面的代码利用序列化功能读写数据:

class CYourDoc : public CDocument

{

void Serialize(CArchive& ar);

CString m_szDesc;

CAllPID m_allPID;

......

}

void CYourDoc::Serialize(CArchive& ar)

{

if (ar.IsStoring())

{//由于CString对CArchive定义了<<和>>操作符号,所以可以直接利用>>和<<

ar<<m_szDesc;

}

else

{

ar>>m_szDesc;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-35251-20.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 牛萌萌
      牛萌萌

      日俄战争日本伤亡比俄军多几万人

    • 杨玉珍
      杨玉珍

    • 赵孟波
      赵孟波

      我想我也可以不断地去追求的

    热点图片
    拼命载入中...