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

📄 subject_55178.htm

📁 vc
💻 HTM
字号:
<p>
序号:55178 发表者:鹏程 发表日期:2003-10-07 14:59:48
<br>主题:请朋友们给解释一下,谢谢了
<br>内容:void CEditorDoc::Serialize(CArchive&amp; ar)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//CString&nbsp;&nbsp;s(&#34;&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;nCount=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;item(&#34;&#34;);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (ar.IsStoring())<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO: add storing code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POSITION&nbsp;&nbsp;pos;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos=lines.GetHeadPosition();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pos==NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(pos!=NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item=lines.GetNext(pos);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar&lt;&lt;item;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.Empty(); //clear the line buffer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO: add loading code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar&gt;&gt;item;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines.AddTail(item);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(CArchiveException *err)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(err-&gt;m_cause!=CArchiveException::endOfFile)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0(&#34;Unknown exception loading file!\n&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRACE0(&#34;End of file reached...\n&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //end of catch<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //end of while(1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nLineNum=nCount;<BR>&nbsp;&nbsp;&nbsp;&nbsp;} //match of else<BR>}<BR><BR>上面函数中有多处不明白:<BR>(1)try--catch(CArchiveException *err)--throw;是什么意思?<BR><BR>(2)TRACE0(。。。。);是什么意思?<BR><BR>(3)书上说函数:item=lines.GetNext(pos);返回指针,可我不明白?<BR><BR><BR><BR>
<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>回复者:michael 回复日期:2003-10-07 16:08:27
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;1 try catch throw 是ansi规定的面向对象语言的标准语句。不光C++有delphi也有。<BR>这是为了处理异常专门设计的。它可以大大提高程序的健壮性。比如:申请内存,结果有两种,一是申请到了,二是申请不到。发生第二种情况时,就会抛出一个异常,catch里的语句是用来处理异常的。这样起码在程序申请内存失败时程序不会死掉。而且还可以释放已申请的资源。<BR>&nbsp;&nbsp; 2 <BR>TRACE0( exp )<BR><BR>Parameters<BR><BR>exp<BR><BR>A format string as used in the run-time function printf.<BR>TRACE0 - Takes a format string (Only) and can be used for simple text messages which are dumped to afxDump<BR>摘自《MSDN》<BR>这其实是一个宏。他只有在debug模式下才起作用。他就像printf()只是把结果输出到VC6.0的OutPut窗口。以便与究错。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;3由于没有完全代码,我只能猜测Lines是一个对象的集合。可能是从CObList或它的自类的一个对象。这个集合对象里面存储的就是指向各个对象的指针。所以返回的是指针。<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>
回复者:a dog 回复日期:2003-10-07 16:51:02
<br>内容:我们真正想执行的是try块里的代码,但是代码执行时可能会发生异常,这时catch就会捕获到,我们就可以在catch块采取一些补救措施或是输出通知信息。<BR>MFC的好多函数的声明后面跟有throw(.....),这样的函数就能抛出异常,我们就可以把这种函数放在try块中,然后就可以从catch块中获得这个函数的执行情况。上面的代码中抛出异常的就是CArchive的&lt;&lt;函数。<BR><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>
回复者:鹏程 回复日期:2003-10-07 19:57:21
<br>内容:上面的第三个问题,Lines是链表对象:CStringList&nbsp;&nbsp;Lines;按行保存文本。我不明白的是他如果返回指针,那么这个语句成立吗:item=lines.GetNext(pos);因为item是CString型的:CString&nbsp;&nbsp;item(&#34;&#34;);,所以我糊涂了。<BR><BR><BR><BR><BR><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>
回复者:水番 回复日期:2003-10-07 20:46:49
<br>内容:To 3楼:<BR>typedef int* PINT;<BR>PINT p;<BR>你说p是不是指针
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:鹏程 回复日期:2003-10-07 21:12:02
<br>内容:回楼上:<BR><BR>难道CString&nbsp;&nbsp;item(&#34;&#34;);句中的“CString”是:<BR><BR>typedef String* CString 吗?我只知道CString是一个类。<BR><BR>我真的不清楚。<BR><BR><BR><BR><BR><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>
回复者:水番 回复日期:2003-10-07 21:17:21
<br>内容:const CString&amp; operator =( LPCWSTR lpsz );<BR>throw( CMemoryException );<BR><BR>const CString&amp; operator =( LPCSTR lpsz );<BR>throw( CMemoryException );<BR><BR>相信你可以明白了。<BR><BR><BR>2003-10-7 21:19:53

⌨️ 快捷键说明

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