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

📄 subject_20713.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:20713 发表者:chan 发表日期:2002-11-08 20:31:40
<br>主题:关于CList模板类的serialize问题?
<br>内容:各位大虾,你们好,我的程序出了点小问题,请帮我看看:<BR>/////////h<BR>class PlayList:public CObject<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;DECLARE_SERIAL(PlayList)<BR>&nbsp;&nbsp;&nbsp;&nbsp;PlayList();<BR>&nbsp;&nbsp;&nbsp;&nbsp;PlayList(const PlayList& pl);<BR>&nbsp;&nbsp;&nbsp;&nbsp;PlayList& operator=(const PlayList& pl);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString ListName; //播放列表项目名称<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString TextName; <BR>&nbsp;&nbsp;&nbsp;&nbsp;CString GifName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString AudioName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual void Serialize(CArchive& ar);<BR>};<BR><BR>///////////ccp<BR>IMPLEMENT_SERIAL(PlayList,CObject,0)<BR>PlayList::PlayList()<BR>{<BR>}<BR>PlayList::PlayList(const PlayList& pl)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;AudioName=pl.AudioName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;GifName=pl.GifName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;ListName=pl.ListName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;TextName=pl.TextName;<BR>}<BR>PlayList& PlayList::operator=(const PlayList& pl)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;AudioName=pl.AudioName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;GifName=pl.GifName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ListName=pl.ListName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TextName=pl.TextName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return *this;<BR>}<BR>void PlayList::Serialize(CArchive& ar)<BR>{&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;TRACE("PlayList::Serialize");<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (ar.IsStoring())<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;// storing code<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar&lt;&lt;ListName&lt;&lt;TextName&lt;&lt;GifName&lt;&lt;AudioName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;// loading code<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar&gt;&gt;ListName&gt;&gt;TextName&gt;&gt;GifName&gt;&gt;AudioName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>PlayList类的所有东西都列出来的<BR>现在我定义一个全局变量CList&lt;PlayList,PlayList&&gt; g_playList;<BR>在一个TransparentWnd类的构造函数里想把play.lis文件的内容读出来(现在他是空的)<BR>TransparentWnd::TransparentWnd()<BR>{&nbsp;&nbsp; char* pszFileName ="play.lis";<BR>&nbsp;&nbsp;&nbsp;&nbsp;CFile myFile;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CFileException fileException;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if ( !myFile.Open(pszFileName, CFile::modeCreate |&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CFile::modeReadWrite,&fileException ) )<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ TRACE( "Can't open file %s, error = %u\n",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pszFileName, fileException.m_cause );<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;//从play.lis文件读出播放列表到g_playList存放;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CArchive archive(&myFile, CArchive::load|CArchive::bNoFlushOnDelete);<BR>&nbsp;&nbsp;&nbsp;&nbsp;g_playList.Serialize(archive);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archive.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;myFile.Close();<BR>}<BR>不知道为什么,每一次执行到g_playList.Serialize(archive);会出现一个runtime error<BR>我调试一下,可以看到执行到<BR>template&lt;class TYPE, class ARG_TYPE&gt;<BR>void CList&lt;TYPE, ARG_TYPE&gt;::Serialize(CArchive& ar)<BR>{<BR>。。。。。。。。。。。。。。<BR>DWORD nNewCount = ar.ReadCount();&nbsp;&nbsp;//在这里出错?<BR>}<BR>请大虾多多指点 cjq@tclrf.com
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:redleaf 回复日期:2002-11-10 10:24:03
<br>内容:首先说明一下,我也是才鸟一个,我在这里把我的想法说一下,你可以试一下<BR>在PlayList的定义中加入DECLARE_DYNAMIC(PlayList)宏<BR>然后在实现文件的开始部分加入IMPLEMENT_DYNAMIC(PlayList, CObject)宏
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:草席 回复日期:2002-11-10 10:43:01
<br>内容:建议先测试PlayList类的Serialize功能,然后在测试CList的Serialize功能<BR><BR>我觉得是没有正确使用CList类造成的<BR><BR>楼上的朋友说的好像没什么道理!这个宏与串行化操作没有关系
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:chan 回复日期:2002-11-11 08:41:23
<br>内容:谢谢各位,我已搞定,爽 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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