<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[]]></title>
<link>http://www.RainCoding.com/blog/</link>
<description><![CDATA[]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[Rainstorey@GMail.com(Rain)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title></title>
	<url>http://www.RainCoding.com/blog/images/logos.gif</url>
	<link>http://www.RainCoding.com/blog/</link>
	<description></description>
</image>

			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=167</link>
			<title><![CDATA[难得单纯]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[技术感悟]]></category>
			<pubDate>Sat,27 Dec 2008 23:34:15 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=167</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程序员是特殊的团体，唯有不断的学习和积累才能胜任各种层出不穷的技术。虽然软件技术十多年来并没有本质的变化，但各大软件商为了不断赚取利润推出各种各样建立在基础设置上的包装和实现来“忽悠”客户。客户一但认可便要求作为技术员的我们采用XXX技术实现。有些所谓的技术其实就是单纯的记忆力的比拼，类库的类，方法，事件。包装过的新名词，试问近几年推出的.Net,Slight,WPF,Ruby,Ajax,WCF,SOAP,Web Service,XML,JAVA... ...可否有些新技术？那些只是玩的技术的噱头。我曾经看过一本书，说是Microsoft认为技术支持能够比买产品更能赚钱。所以他们在自己的软件技术中加入了层层包装，每一层包装都能养活一批公司。举个例子：VC++ 6刚推出的时候MFC中没有像其IDE中那个可拖动，可定制的Toolbar，那是故意的。后来有专门的组件公司提供了相应的ActiveX来配合程序员用户,后来用户强烈要求下Microsoft自己在MFC中实现了那个Class但遭到那家组件公司的强烈反对，不得以只好去掉。客户们只好继续拖着个ocx实现的Toolbar了。另外一个：ActiveX的规范为何如此繁杂和啰嗦，纯技术实现根本不必要这样。内部人士指出，这样可以为客户提供培训收取培训费。这些公司的准则就是把事情复杂化，复杂化的东西可以延伸出许多其他利润点。当你在埋头苦学Com规范，C#，Java时是否想过这些呢？<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为核心技术并不能带来直接的经济效益导致国内几乎没有基础设置的建设，从而使得国内的程序员一开始就站在了巨人的肩膀上工作，且这个巨人的构成都是国外零部件。当你用这巨人的力量击碎沉重的项目巨石你是否有着巨人一样的成就感？你是否感到其实这力量并不在于你。那么你的力量源泉始于那呢？因此你开始迷茫了，开始怀疑了技术的真实性，认为这都是虚无缥缈的东西。任何人都能取代你目前的位置，因为你工作的全部只不过是发发指令而已。属于你的东西又在那了。迷茫的根源再于此。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;迷茫其实是对技术以外的事物(更多的是钱)的更多考虑，从而对技术的怀疑。高技术！=金钱<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;市场+策略+技术==金钱，技术是最后一位的，很多事实证明技术其实并不重要，就像传销，传的那东西只是忽悠的道具，是肥皂，洗头水都不重要，有些就干脆连东西都省了，直接会员制。所以请千万不要认为做技术==高薪，技者工匠也，工匠属于体力劳动者。劳力者受制于人。这就是中国5000年的习惯，现在和以后都改变不了。要高薪当管理者当官才是王道。所以希望值不要太高你就不会迷茫。等到你不再迷茫而继续选择做技术且一头专进去这时你离成功就不远了。所以往往单纯的人做技术更容易成功就是这个道理。]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=166</link>
			<title><![CDATA[精灵之森]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[我的作品]]></category>
			<pubDate>Mon,13 Oct 2008 19:51:06 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=166</guid>
		<description><![CDATA[游戏“精灵之森&#34;,只做了个封面和主菜单。游戏内容目前还没有想好，主要是自己封装了个简单的粒子系统玩玩效果如何。用来写代码的业余时间不多，也只能凭兴趣随意而行了。可能做些商业的东西更能激发一些动力而无论结果如何，呵呵。<br/><br/><img src="http://www.raincoding.com/blog/software/FairyTreasure.JPG" border="0" alt=""/><br/><br/>-准备和IncaJewels合并做一款完整的休闲类小游戏]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=165</link>
			<title><![CDATA[Delphi2009感想]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[技术感悟]]></category>
			<pubDate>Thu,14 Aug 2008 16:17:48 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=165</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于即将发布的Delphi2009在网络上似乎进行着非常热烈的讨论。从我自身的感觉来看Delphi2009预示着Delphi又开始进步了，但这仅仅是一个开始，以后的路还要看CodeGear如何走。回到Delphi2009上，该版似乎增加了一些“激动”的功能。从编译器上来说似乎支持了泛型，Unicode,一些流行的语法糖（匿名方法等等），好像还隐约支持反射。但就这些特性上来说并不新鲜，只不过Delphi也要紧跟流行元素。VCL的改进应该是RTL被替换了更高效的FastCode等开源的代码内核，大量的容器，新的线程类，并发，锁机制等等。估计这些改动不可避免的引入许多Bug,但这毕竟是好事，同样证明了Vcl声声不息。IDE的改动可以不谈，并不是不重要，而是开发到了一定阶段IDE无关痛痒了。其实总的来说先今世界没有那门语言能包吃天下，否则这世界只需要C就足够了。前几天偶尔听到一门电视讲座《小企业的生存之道》。里面的主要内容就是小企业要生存，其产品无论高低贵贱一定要做精而不求广，想包吃天下的下场就一定失败。还举了个例子，一欧洲小企业就只生产一种产品，小朋友吹泡泡用的肥皂水，因为其专一做到了同类产品品质第一所以其世界占用量达到70%多。可见无论个人，还是小公司只有搞出自己有独特特色的产品才能出类拔萃，才能生存。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在开发软件只要大一点规模的都是混合编程，一门语言搞定的要么是没有技术难度，要么就是粗制滥造。想在编程语言中一枝独秀我觉得必须有自己的专长。VB其生命力可谓强，其特点就是简单。Delphi当年号称VB Kill。VB依然还是活得好好的。所以语言功能强大未必就有更多市场。关键是其定位。如果VB又是支持com,又是支持OOP,又是支持Genericity搞得语言很复杂说不定就失去了现在的市场。VB.Net的用户明显就没有VB来得多。从我从业的经验来看。如果从赚钱的角度来说，一门编程语言最主要的就是要支持企业特性，把企业的一些逻辑直接整合到语义层面上来。.net的Linq就是一例。企业逻辑是什么？就是数据库的增删改，现今的世界还要包括好的分布式和并发方案。.Net的分布式方案主要有Remote和WCF.Jave也有相应的方案。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delphi2009据说也有类似Jave的Json的DataSnap方案。这就找对路子了，但做得还不够。必须要专这个方向下去，.Net Jave Delphi说白了都是市场经济下的项目开发用语言，对项目的整合包装和集成Delphi还远远不够。Java为什么有这么多的缺点却是企业开发的王牌？原因无非是 免费开源，好用的类库，对数据库和BS模式的开发支持很出色。尤其最后一点，做精了就不愁赚不到钱。因为开发人员的内心都是技术之上的，但是经过了多年的从业经历来看。我认为商业开发和纯粹的开发有这本质的区别。比如开发人员上班时的思维就因遵循市场的脉搏做主导，市场至上而不是技术之上。产品的稳定至上而不是代码的优雅之上。说白了就是赚钱之上。具体到Delphi的开发上我个人认为应该把所有精力都投入到企业框架上，类似于Java有这么多好用的框架，填填代码就能Build优秀的分布式企业解决方案。夺回企业市场是重中之重。VS2008有剑走偏锋之嫌，所以C#的市场占有量始终超不过Jave甚至是C/C++.但M$有实力探索，CodeGear不行，不能再失败了。定位就应该在企业市场，什么对Com/Com+,裸指针的支持等等，做企业开发的有几个用得到这些“底层”功能的。说真的，自己下班回家做纯粹有“技术”含量的开发大都用的都是C/C++.企业开发的要决就是 稳定稳定再稳定，高层高层再高层，简单简单再简单。超高的封装达到超高的易用性。看看.Net Jave释放都用GC,要啥功能只要new一切就这么简单。这就是定位准确，兼上而顾下反而得不到市场。Delphi当年的目标号称即可以不写一行代码就能完成一个数据库应用，又能只靠Delphi语言写一个编译器出来。是的，Delphi办到了。这种一统天下的语言成就了当时的辉煌。但是今非昔比了，写数据库项目的需求远远多于写编译器的需求。.Net Jave有着更好开发企业逻辑的功能和类库即使他们不能写编译器有如何？Delphi,你该好好想想了。今后的路究竟如何走，就如同每个开发人员思考先赚钱还是先研究没钱途的技术一样是个难题。]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=164</link>
			<title><![CDATA[ErrorProvider VCL]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[我的作品]]></category>
			<pubDate>Wed,25 Jun 2008 16:10:21 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=164</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;虽然我始终认为.Net Framework只能做产品不能做艺术品(十几年前的软件都堪称艺术品).但是M$的人性化UI和客户的体验始终是最好的.Windows在编程上的混乱和复杂性很大一部分是屈就于健壮性和易用性.所以开源的OS在设计上和编码上虽然更漂亮更规范但是得不到最终用户的肯定还是无法成为一款好的产品.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;前几天看到网上有网友询问是否有VCL版的ErrorProvider,我想大概这个组件比较好玩所以有人才惦记她.于是打开VS用了一下觉得挺有趣于是写了个VCL版.该VCL版不支持数据敏感.(Delphi对于数据库的强大加很少代码就可以了),主要是我对数据库没兴趣.除此之外支持所有的.Net版本的特性还增强了某些方面的功能.配合其他THint能够大大超越.Net版本.喜欢玩的朋友可以试试.<br/><br/><img src="http://www.RainCoding.com/blog//blog/software/ErrorProvider.png" border="0" alt=""/><br/><br/>该组件准备贡献于CnPack，且功能做了较大改动。最新版请访问CnPack主页。]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=163</link>
			<title><![CDATA[游戏新人(程序员)应聘时的秘诀]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[技术感悟]]></category>
			<pubDate>Tue,27 May 2008 13:58:29 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=163</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一份好的工作会给你自身的技术水平来个质的提升.许多一样水平的初学者有些成了该领域的大牛,有些默默无闻甚至离开了游戏行业为什么?就是因为前者找到了适合他锻炼的环境.就像我本人一样如果不是项目所迫就懒得写代码而是更愿意看书.(当然写游戏仅仅是我的爱好但不是全部,所以我没能坚持下来,惭愧惭愧.)现在我就个人对游戏新人初次进入该行业谈一些自己的看法,这有助于你比别人更能得到工作岗位的机会.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先是文凭:万恶的文凭是永远的敲门砖,虽然有无数的例子证明许多公司犯过拒绝应聘日后成为业界顶尖大牛的错误,但是他们宁愿错杀一千不放过一个的心态(尤其是国内,因为国内公认的大牛业界都知道)来看待文凭这东西.所以基本的文凭是最重要的.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接下来最重要的就是你的游戏Demo.新人当然没有工作经验,所以也不要侃侃而谈,也不要说自己对游戏有多么的热情,除非你是应聘策划或测试.好的Demo胜过千言万语.Demo不管你应聘公司是做2D的还是3D的你的Demo必须是3D的.国内公司都相信3D的更有技术含量(我不认同这观点,尤其是都是构建在引擎的作用下).第二,不能用任何引擎来构建你的Demo.很多引擎比如Irrlicht百来行代码就能做个Quake的雏形出来,当游戏公司得知你的Demo是用引擎来写的那么肯定对你的影响会打折扣.所以我推荐的做法是根据自己Demo的形式自己封装一个3D引擎,不要功能强大,刚刚好能完成自己Demo就行.这样你就给游戏公司一个不仅能做游戏,还会写可重用的代码的能力.要知道游戏公司里最贵的人才不是写逻辑,写客户端,而是写封装底层代码的那些人.所以要暗示公司自己也有这方面才能.引擎这东西写Demo最好不要用,但又要和公司说明你也了解某些引擎的用法.取巧的方法就是事先对你的应聘公司的游戏有个了解.比如搜狐的Ogre,网易的风云II,BigWorld,Unreal等等.这样意味着你能快速切入工作中去.再高级点做法就是针对你应聘公司在市场上的游戏产品的不足提供解决方案到你的Demo中去,比如某些网游界面设计的不好,你就在Demo中发挥你人性化界面的设计才能,某些网游寻路算法实现的不好,你在Demo中展示个你更好的.某网游中水的效果不真实,你就在Demo中写个更逼真的.这样就有非常非常大的胜算直接进入该游戏公司,因为你所看到的缺点项目经理们肯定也知道.当他们看到你的Demo中这些效果时心中会大吃一惊:&#34;这就是我想要的&#34;.那么就OK了.另外新人最好都学点脚本语言,游戏中经常要用到.用得最多的是Python和Lua.很少有国内公司自己开发脚本语言的.学会这二种就够了.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外就Demo还有几点建议:首先效率问题不是重点,把Demo的特效充分发挥出来(应聘Client Graphic),加入一些简单的系统,比如师徒任务,情节(Logic Design).再加入一些独特的你自己的想法.做到以上这些你几乎就可以得到明天来上班的讯息了. 还有一点就是你应聘的公司在市场必须有自身研发且实际在运营的游戏产品,如果都是代理其他公司产品没有自己研发产品的&#34;代理公司&#34;,请慎重考虑,别被忽悠.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以Demo是关键,如果应聘公司不光是技术部门说得算的,比如还有人事,行政等其他部门.那么Demo里的人物尽量Q一些,事实证明Q的人物虽然不是全部人都认同但绝大数人还是接受的.试想你做了一个非常另类的或者很黄很暴力的游戏画面,说不定在第一关人事MM面前就被嗯呀,这么这样而被Kill掉了.呵呵,天知道.所以万事都考虑周全百战不殆. 当然这样的Demo需要花些时间和精力的,但对于有激情和梦想又不缺时间的游戏新人来说不算什么.祝好运.<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=161</link>
			<title><![CDATA[基于射线的碰撞检测]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[技术感悟]]></category>
			<pubDate>Sun,18 May 2008 13:58:37 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=161</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;在3D游戏设计中判断射线是否相交于3D物体是最基础也是最重要的应用之一.在Direct3D中有一函数D3DXintersect来专门提供射线于Mesh的碰撞检测.现在来看一下其数学原理.<br/>&nbsp;&nbsp;&nbsp;&nbsp;第一步:由取得屏幕的点(比如鼠标点击窗口)的坐标转换为视口变换坐标.视口矩阵可以用LPDirect3DDevice9-&gt;GetViewport()来取得视口矩阵.当然自己构建也可以.矩阵结构为[ (Width/2,0,0,0),(0,-Height/2,0,0),(0,0,MaxZ-MinZ,0),(X+Width/2,Y+Height/2,MinZ,1)].3D中的点如:P=(Px,Py,Pz)和视口矩阵进行变换得到:Screen_X=Px(Width/2)+X+Width/2;Screen_Y=Py(Height/2)+Y+Height/2;已知Screen_X和Screen_Y那么求3D点P就是:Px=(2*Screen_X-2*X-Width)/Width;Py=(-2*Screen_Y+2*Y+Height)/Height.<br/>架设视口X,Y(原点)是(0,0)那么代入方程Px=(2*Screen_X/Width)-1;Py=(2*Screen_Y/Height)+1;因为射线是从屏幕点发射.所以Pz=1;由于3D场景中的物体都是经过投影变换,所以我们的射线也要进行变换才能符合场景中的比例大小.投影变换矩阵可以用LPDirect3DDevice9-&gt;GetTransForm(D3DTS_PROJECTION)来获得.查阅投影变换矩阵得出对x,y有影响的比例因子为(0,0)(1,1)二个元素.所以只要再Px=Px/(0,0);Py=Py/(1,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;第二步:对射线进行取景变换已得到在场景中真实反应射线的向量.先对取景变换取逆矩阵(Z&lt;0朝向屏幕里)然后使用矩阵于向量相乘得到变换结果.可以用D3DXVec3TransformCoord和D3DXVec3TransformNormal(前者用于射线的原点(w=1),后者用于向量(w=0))为了接下来的碰撞检测方便一般我们对射线向量正规化.使用D3DXVec3Normalize<br/>&nbsp;&nbsp;&nbsp;&nbsp;第三步:碰撞检测.这一步就比较容易了.不管是用边界球还是包围盒还是直接用面片等方法都相差不太大.下回再说吧.]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=160</link>
			<title><![CDATA[一个时代的终结.]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[技术感悟]]></category>
			<pubDate>Thu,08 May 2008 13:15:02 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=160</guid>
		<description><![CDATA[昨天看到CodeGear的官方网站宣布CodeGear被Embarcadero Technologies公司以2300万合并(收购).一个辉煌的Dephi时代宣告终结.未来的趋向谁也不知道.虽然国外公司与国内的公司文化不同.但肯定的是CodeGear的开发人员肯定或多或少有心理上的波动.可能有乐观也可能有悲观的.肯定的是对产品的开发进度是不利的.至于以后Delphi的未来,嗯.我猜测如果该数据库公司放手独立让CodeGear自主开发自主有绝对的控制权.母公司主管营销等方面的外围工作,那么Delphi的未来还是很光明的(据说Embarcadero公司营销有一套).如果Embarcadero全面插手CodeGear的所有事务,那么delphi将会朝单一化,专门话的语言发展.比如Ada,Lisp等类似语言一样Delphi将会大大增强数据库处理的能力.但其他的各个方面将会全面退化.呵呵,也不是太坏的结果.当然最坏的结果就是如同大多数收购案一样落得个没人理的结果如同FoxPro等.只有绝少数人还在缅怀.全面退出主流语言的圈子.因为花的收购价钱并不多,所以也还是存在这个可能的.总之,愿CodeGear一路走好...]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=159</link>
			<title><![CDATA[我的淘宝小店]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[生活随笔]]></category>
			<pubDate>Mon,07 Apr 2008 12:26:05 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=159</guid>
		<description><![CDATA[由于兴趣转移故出售一些二手书籍(9-10成新),有兴趣的话可以去看看.当然不限于书籍.还会有更多的更好的东西呢.<br/>淘宝地址:<a target="_blank" href="http://shop35589959.taobao.com/" rel="external">http://shop35589959.taobao.com/</a>]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=158</link>
			<title><![CDATA[Delphi 2008的新功能]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[资料转载]]></category>
			<pubDate>Fri,21 Mar 2008 09:41:58 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=158</guid>
		<description><![CDATA[delphi2008的新特性：<br/>1. 支持Unicode，這個是眾多delphi程序員期盼已久的了，這次終於要實現了<br/>2. 支持編譯64位的應用程序，它將成為64位系統下，效率最高的開發工具<br/>3. for Win32 版本支持泛型，原本只是在Delphi.NET中有此功能<br/>4. for Win32 版本支持反射，同樣的，原本只在Delphi.NET中有<br/>5. delphi2008應當能直接編譯以前版本的源碼，並且使用FastMM作為內存管理工具<br/><br/>另外，會有一些新的框架面世，范路先生所說的Application Factory實在是狠吸引人<br/>它可以讓開發人員在開發過程中就記錄下自己的知識，在更換人員時，交接將變得異常簡單<br/>並且Application Factory可以跟據以前的程序以及定下的規則，快速的生成新代碼<br/>這對於經常要開發同一種系統，但又需要為不同用戶定製需求時，將非常有用<br/><br/>另外，delphi2008也將會有 for win32和for .NET的版本<br/><br/>据说已经快内测了.无限期待....<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.RainCoding.com/blog/article.asp?id=157</link>
			<title><![CDATA[小技巧(Office)]]></title>
			<author>Rainstorey@GMail.com(rain)</author>
			<category><![CDATA[技术感悟]]></category>
			<pubDate>Wed,27 Feb 2008 14:32:36 +0800</pubDate>
			<guid>http://www.RainCoding.com/blog/default.asp?id=157</guid>
		<description><![CDATA[最近在一个项目中要实现一个功能就是检测office文档比如word产生的doc文件是否加过密的功能.看起来这微不足道,我的第一个反应就是看看office提供的interface中是否提供有此接口.查阅sdk发现提供一只写功能的Password属性,想想如果提供read的属性那还了得.再找找类似isPassword方法或属性基本就放弃了这个想法.Google了一下发现也有类似朋友遇到此类问题.通过open一些doc文件在遇到有password文件时可恶的oepn不返回NULL也不exception而是显示InputPassWord Dialog,这就达不到自动化的功能了.现在M$开放了Office文档的二进制结构,但不至于为这问题去分析这庞大的结构定义吧. 忽然我一拍脑袋,要密码是否就随便给个密码来使得open失败呢?经过试验随便在open()里给个密码打开有密码文档是会Exception,哈哈,这样就能Catch住了.密码猜对我也无话可说.使得这一方法通过的不可或缺的因素还在于在随便使用密码参数的open中打开无密码的doc文件没有任何副作用.呵呵,没想到这个问题就这样轻松的解决了.谁说编程是枯燥乏味的体力活?这不是在耍小聪明中充满了乐趣吗?!]]></description>
		</item>
		
</channel>
</rss>
