﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-我自闲庭信步,悠然自得,不亦乐乎.-随笔分类-开发点滴</title><link>http://www.cppblog.com/huyi/category/1675.html</link><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
------ Keep life simple&lt;br&gt;

GMail/GTalk/MSN:huyi.zg@gmail.com</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 07:32:59 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 07:32:59 GMT</pubDate><ttl>60</ttl><item><title>关于文件操作的封装处理</title><link>http://www.cppblog.com/huyi/archive/2006/10/14/13675.html</link><dc:creator>HuYi</dc:creator><author>HuYi</author><pubDate>Sat, 14 Oct 2006 08:45:00 GMT</pubDate><guid>http://www.cppblog.com/huyi/archive/2006/10/14/13675.html</guid><wfw:comment>http://www.cppblog.com/huyi/comments/13675.html</wfw:comment><comments>http://www.cppblog.com/huyi/archive/2006/10/14/13675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/huyi/comments/commentRss/13675.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/huyi/services/trackbacks/13675.html</trackback:ping><description><![CDATA[
		<div id="inbdy">File类本身并不持有文件句柄，它只是集中了一系列对文件的操作方法，如Create，Open等等。这些方法全部都是静态的，也不进行任何的安全检测，仅仅<wbr>是直接调用pspsdk来完成任务，如果出现错误，则返回负值。 <br />File的Open等方法可以创建针对指定文件读写的流对象FileStream，句柄由FileStream自己创建和持有管理，File::Open只是传<wbr>达路径信息。 <br />可以把File看作是一个门面，集中了对文件的所有操作，并且不需要创建File对象就可以直接执行这些操作。所以说File为文件的单一操作提供了快捷简便的<wbr>方式。 <br />除了几个创建FileStream流的操作外，其他操作都不会长期占用句柄资源，遵循"句柄创建-执行具体操作-释放句柄"的步骤。 <br /><p>如果需要频繁的操作文件，则需要一个类来长期持有句柄，避免经常性的打开和关闭文件，故此引入FileInfo类。FileInfo执行Append等操作时，<wbr>都是使用事先打开的文件句柄。 <br />同时，FileInfo也可以创建FileStream实例，但这个时候，文件的句柄生命周期应该由FileInfo来管理，FileStream可以使用这个<wbr>句柄，但不能结束其生命周期，FileStream::Close()方法仅仅使这个流处于关闭（不可读写）状态，但并不实际关闭文件句柄。 <br />这种情况下，FileInfo所创建的FileStream::Close()的行为和前面File所创建的FileStream::Close()行为有差异<wbr>。因为File并不持有句柄，所以它创建了FileStream对象后，句柄应该由FileStream来管理。但FileInfo所创建的FileStrea<wbr>m是使用的FileInfo所创建好的句柄，所以它并不对此句柄负责。 <br /></wbr></wbr></wbr></wbr></p><p>实现策略： <br />1.使用基于继承的多态或基于模板的静多态。 <br />2.使用函数回调。把Close做成调用函数指针，通过不同的FileStream构造函数调用，来设置指针指向不同的Close函数实现。（关闭句柄或不关闭<wbr>句柄） <br />这两种做法的优劣性正在考证中，请提出意见。 <br /><br /><br />补充：File和FileInfo的关系在dotnet中也有体现，不过他们主要是从错误检测方面考虑。<br />最终的目的是要为客户提供一个统一的界面，所以不能用太复杂的模板。<br /><br />经过慎重考虑，我还是决定用虚函数，放弃了模板。<br /></wbr></p></wbr></wbr></wbr></div>
<img src ="http://www.cppblog.com/huyi/aggbug/13675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/huyi/" target="_blank">HuYi</a> 2006-10-14 16:45 <a href="http://www.cppblog.com/huyi/archive/2006/10/14/13675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生成编译ACE需要的各种项目文件</title><link>http://www.cppblog.com/huyi/archive/2006/05/09/6816.html</link><dc:creator>HuYi</dc:creator><author>HuYi</author><pubDate>Tue, 09 May 2006 05:00:00 GMT</pubDate><guid>http://www.cppblog.com/huyi/archive/2006/05/09/6816.html</guid><wfw:comment>http://www.cppblog.com/huyi/comments/6816.html</wfw:comment><comments>http://www.cppblog.com/huyi/archive/2006/05/09/6816.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/huyi/comments/commentRss/6816.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/huyi/services/trackbacks/6816.html</trackback:ping><description><![CDATA[
		<p>在这里把我经常走的套路总结一下。<br /><br />比如说我想在Win32下生成支持MFC的动态链接库s：<br /><br />1。按装ActivePerl。<br />2。编辑MPC\templates\vc7dll.mpt。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">configurations </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> Debug Release </span>
		</div>改为<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">configurations </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Debug Release </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MFC Release</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MFC Debug</span><span style="COLOR: #000000">"</span></div><br />3.编辑ACE_wrappers下的ACE.mwc文件，改为如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">workspace {<br />    ace<br />}<br /></span></div><br />4。运行bin\mwc.pl -type vc7 -ti vc7dll ../ace.mwc<br /><br />这一步会重新生成ace.sln<br /><br />提醒一下，别忘了创建config.h文件，内容类似如下：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">config-win32.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br />#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">config-win32-msvc-7.h</span><span style="COLOR: #000000">"</span></div><img src ="http://www.cppblog.com/huyi/aggbug/6816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/huyi/" target="_blank">HuYi</a> 2006-05-09 13:00 <a href="http://www.cppblog.com/huyi/archive/2006/05/09/6816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>