﻿<?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>语源科技BlogJava-没话说了</title><link>http://www.blogjava.net/howard/</link><description>所学甚浅，所知甚少</description><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 17:56:06 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 17:56:06 GMT</pubDate><ttl>60</ttl><item><title>JWCHAT + JHB + WildFire配置说明</title><link>http://www.blogjava.net/howard/archive/2006/11/03/78976.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Fri, 03 Nov 2006 12:19:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2006/11/03/78976.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/78976.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2006/11/03/78976.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/78976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/78976.html</trackback:ping><description><![CDATA[    建立一个web形式的即时通讯（IM）系统。这里采用<a href="http://www.jivesoftware.org/" target="_blank">WildFire</a>作为服务器，JWCHAT作为web客户端。由于<a href="http://jwchat.sourceforge.net/" target="_blank">jwchat</a>只支持<a href="http://www.xmpp.org/extensions/xep-0124.html" target="_blank">HTTP Binding</a>和http pulling两种方式的链接，所以需要一个提供这两种方式之一的中间件，这里选择的是<a href="http://zeank.in-berlin.de/jhb/" target="_blank">jabberHttpBinding</a>，原因是它是符合官方xep-1024规范的，而http pulling不是（忘记哪里看到的了）。下面的配置也只在HTTP Binding情况下运行成功过。<br /><br />    1，安装WildFire。下载wildfire_3_1_1的压缩包，解压后运行bin/wildfire.exe，在wildfire启动成功后，点击Lanche admin按钮或者直接在浏览器中<a href="http://yourhost:9090">http://yourhost:9090</a>，进入安装配置界面，有中文界面，根据自己情况配置，这里就不说了。<br /><br />    2，安装jwchat，下载jwchat.war，里面自带有jhb，不过好像没有web.xml和DNSUtil.class两个文件，可以单独下载JHB后，覆盖调jwchat.war下相应的文件，关键是不要忘了web.xml的几行配置。<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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Jabber HTTP Binding Servlet</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">org.jabber.JabberHTTPBind.JHBServlet</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Jabber HTTP Binding Servlet</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/JHB/</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">&gt;</span></div><br />    3，配置jwchat，打开config.js，进行一些修改，写的比较简单了。<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.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> SITENAME </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wildfire</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> wildfire配置时写的域名</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />httpbase:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/jwchat/JHB/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> JHB在jwchat目录下</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">default_server: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wildfire</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> DEFAULTRESOURCE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wildfire</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> DEFAULTCONFERENCEROOM </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wildfire</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> DEFAULTCONFERENCESERVER </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">conference.wildfire</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span></div><img src ="http://www.blogjava.net/howard/aggbug/78976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2006-11-03 20:19 <a href="http://www.blogjava.net/howard/archive/2006/11/03/78976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网页中嵌入widow media player播放器插件</title><link>http://www.blogjava.net/howard/archive/2006/04/26/43382.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Wed, 26 Apr 2006 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2006/04/26/43382.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/43382.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2006/04/26/43382.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/43382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/43382.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很简单的，放在着方便我快速查阅。media player7.1以上的播放器：&lt;OBJECT id=my_mp      style="LEFT: 0px; WIDTH: 341px; TOP: 0px; HEIGHT: 237px" height=200       width=304 classid=clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6 VI...&nbsp;&nbsp;<a href='http://www.blogjava.net/howard/archive/2006/04/26/43382.html'>阅读全文</a><img src ="http://www.blogjava.net/howard/aggbug/43382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2006-04-26 17:49 <a href="http://www.blogjava.net/howard/archive/2006/04/26/43382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图片处理</title><link>http://www.blogjava.net/howard/archive/2006/04/24/42888.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Mon, 24 Apr 2006 12:36:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2006/04/24/42888.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/42888.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2006/04/24/42888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/42888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/42888.html</trackback:ping><description><![CDATA[      在网页中有一个预览图片的功能，由一个单元格显示要预览的图片，由于实际图片有大有小，所以要有个函数处理图片的大小。可以这样写<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 id="Codehighlighter1_0_61_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_61_Open_Text.style.display='none'; Codehighlighter1_0_61_Closed_Image.style.display='inline'; Codehighlighter1_0_61_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_61_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_61_Closed_Text.style.display='none'; Codehighlighter1_0_61_Open_Image.style.display='inline'; Codehighlighter1_0_61_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_61_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_61_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * 设定img的宽，高<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * img 动态图片对象<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * width 单元格宽<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * height 单元格高<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_107_492_Open_Image" onclick="this.style.display='none'; Codehighlighter1_107_492_Open_Text.style.display='none'; Codehighlighter1_107_492_Closed_Image.style.display='inline'; Codehighlighter1_107_492_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_107_492_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_107_492_Closed_Text.style.display='none'; Codehighlighter1_107_492_Open_Image.style.display='inline'; Codehighlighter1_107_492_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />fitImageSize </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(img, width, height) </span><span id="Codehighlighter1_107_492_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_107_492_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> rate </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> img.width </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> img.height;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> wh </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> width </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> height;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_197_336_Open_Image" onclick="this.style.display='none'; Codehighlighter1_197_336_Open_Text.style.display='none'; Codehighlighter1_197_336_Closed_Image.style.display='inline'; Codehighlighter1_197_336_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_197_336_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_197_336_Closed_Text.style.display='none'; Codehighlighter1_197_336_Open_Image.style.display='inline'; Codehighlighter1_197_336_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (rate </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> wh) </span><span id="Codehighlighter1_197_336_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_197_336_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_230_330_Open_Image" onclick="this.style.display='none'; Codehighlighter1_230_330_Open_Text.style.display='none'; Codehighlighter1_230_330_Closed_Image.style.display='inline'; Codehighlighter1_230_330_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_230_330_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_230_330_Closed_Text.style.display='none'; Codehighlighter1_230_330_Open_Image.style.display='inline'; Codehighlighter1_230_330_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (img.width </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> width) </span><span id="Codehighlighter1_230_330_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_230_330_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            img.height </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> img.height </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> (width </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> img.width);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            img.width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> width;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_347_490_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_490_Open_Text.style.display='none'; Codehighlighter1_347_490_Closed_Image.style.display='inline'; Codehighlighter1_347_490_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_347_490_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_490_Closed_Text.style.display='none'; Codehighlighter1_347_490_Open_Image.style.display='inline'; Codehighlighter1_347_490_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_347_490_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_347_490_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_382_484_Open_Image" onclick="this.style.display='none'; Codehighlighter1_382_484_Open_Text.style.display='none'; Codehighlighter1_382_484_Closed_Image.style.display='inline'; Codehighlighter1_382_484_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_382_484_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_382_484_Closed_Text.style.display='none'; Codehighlighter1_382_484_Open_Image.style.display='inline'; Codehighlighter1_382_484_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (img.height </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> height) </span><span id="Codehighlighter1_382_484_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_382_484_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            img.width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> img.width </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> (height </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> img.height);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            img.height </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> height;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>      <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"><img id="Codehighlighter1_9_217_Open_Image" onclick="this.style.display='none'; Codehighlighter1_9_217_Open_Text.style.display='none'; Codehighlighter1_9_217_Closed_Image.style.display='inline'; Codehighlighter1_9_217_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_9_217_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_217_Closed_Text.style.display='none'; Codehighlighter1_9_217_Open_Image.style.display='inline'; Codehighlighter1_9_217_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(<img src="http://www.blogjava.net/images/dot.gif" />) </span><span id="Codehighlighter1_9_217_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_9_217_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_24_215_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_215_Open_Text.style.display='none'; Codehighlighter1_24_215_Closed_Image.style.display='inline'; Codehighlighter1_24_215_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_24_215_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_24_215_Closed_Text.style.display='none'; Codehighlighter1_24_215_Open_Image.style.display='inline'; Codehighlighter1_24_215_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(<img src="http://www.blogjava.net/images/dot.gif" />.) </span><span id="Codehighlighter1_24_215_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_24_215_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 是否可以预览</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">         img.src </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">url<img src="http://www.blogjava.net/images/dot.gif" />..</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />            // alert(img.src);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        fitImageSize(img, view.width, view.height);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        img.align </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">center</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        document.getElementById(id).appendChild(img);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />      而当将alert的注释去掉以后，图片将被正常的处理。这应该是alert的时候，js程序被挂起，而图片继续在加载，当alert点击以后，图片加载已经成功，所以，图片被正确处理。如果你alert的是img.width，你会看见信息是0。因此，我对程序再做一点改动，用setInterval函数进行图片的完全加载处理。<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 id="Codehighlighter1_9_335_Open_Image" onclick="this.style.display='none'; Codehighlighter1_9_335_Open_Text.style.display='none'; Codehighlighter1_9_335_Closed_Image.style.display='inline'; Codehighlighter1_9_335_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_9_335_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_335_Closed_Text.style.display='none'; Codehighlighter1_9_335_Open_Image.style.display='inline'; Codehighlighter1_9_335_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(<img src="http://www.blogjava.net/images/dot.gif" />) </span><span id="Codehighlighter1_9_335_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_9_335_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_23_333_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_333_Open_Text.style.display='none'; Codehighlighter1_23_333_Closed_Image.style.display='inline'; Codehighlighter1_23_333_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_23_333_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_333_Closed_Text.style.display='none'; Codehighlighter1_23_333_Open_Image.style.display='inline'; Codehighlighter1_23_333_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(<img src="http://www.blogjava.net/images/dot.gif" />) </span><span id="Codehighlighter1_23_333_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_23_333_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 是否可以预览</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">         img.src </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">url<img src="http://www.blogjava.net/images/dot.gif" />.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> alert(img.src);</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">fitImageSize(img, view.width, view.height);</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">img.align = "center";</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">document.getElementById(id).appendChild(img);</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_299_320_Open_Image" onclick="this.style.display='none'; Codehighlighter1_299_320_Open_Text.style.display='none'; Codehighlighter1_299_320_Closed_Image.style.display='inline'; Codehighlighter1_299_320_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_299_320_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_299_320_Closed_Text.style.display='none'; Codehighlighter1_299_320_Open_Image.style.display='inline'; Codehighlighter1_299_320_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">        preview_interval </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> window.setInterval(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() </span><span id="Codehighlighter1_299_320_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_299_320_Open_Text"><span style="COLOR: #000000">{ loadingImage(img); }</span></span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />{...coding....}<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> preview_interval;<br /><img id="Codehighlighter1_360_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_360_380_Open_Text.style.display='none'; Codehighlighter1_360_380_Closed_Image.style.display='inline'; Codehighlighter1_360_380_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_360_380_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_360_380_Closed_Text.style.display='none'; Codehighlighter1_360_380_Open_Image.style.display='inline'; Codehighlighter1_360_380_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_360_380_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_360_380_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * img 加载的图片对象<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_411_618_Open_Image" onclick="this.style.display='none'; Codehighlighter1_411_618_Open_Text.style.display='none'; Codehighlighter1_411_618_Closed_Image.style.display='inline'; Codehighlighter1_411_618_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_411_618_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_411_618_Closed_Text.style.display='none'; Codehighlighter1_411_618_Open_Image.style.display='inline'; Codehighlighter1_411_618_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />loadingImage </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(img) </span><span id="Codehighlighter1_411_618_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_411_618_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_433_616_Open_Image" onclick="this.style.display='none'; Codehighlighter1_433_616_Open_Text.style.display='none'; Codehighlighter1_433_616_Closed_Image.style.display='inline'; Codehighlighter1_433_616_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_433_616_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_433_616_Closed_Text.style.display='none'; Codehighlighter1_433_616_Open_Image.style.display='inline'; Codehighlighter1_433_616_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(img.complete)</span><span id="Codehighlighter1_433_616_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_433_616_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            clearInterval(preview_interval);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            fitImageSize(img, view.width, view.height);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />           img.align </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">center</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          document.getElementById(id).appendChild(img);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />      这样一来，程序就可以预览图片，并且也不再会出现第一次预览时撑大单元格的现象了。<br /><br />      上面是预览一张图片的情况，我还遇到js动态一次性加载多张图片的情况，解决办法与此相似。下面的代码是我处理多张图（2张为例）的，实际上可以和上面的写在一起，呵呵，懒的，不去动它了。<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 id="Codehighlighter1_0_15_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_15_Open_Text.style.display='none'; Codehighlighter1_0_15_Closed_Image.style.display='inline'; Codehighlighter1_0_15_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_15_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_15_Closed_Text.style.display='none'; Codehighlighter1_0_15_Open_Image.style.display='inline'; Codehighlighter1_0_15_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_15_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_15_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * 加载相关图片<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_67_403_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_403_Open_Text.style.display='none'; Codehighlighter1_67_403_Closed_Image.style.display='inline'; Codehighlighter1_67_403_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_67_403_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_403_Closed_Text.style.display='none'; Codehighlighter1_67_403_Open_Image.style.display='inline'; Codehighlighter1_67_403_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />myClass.prototype.loadAssociateImage </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() </span><span id="Codehighlighter1_67_403_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_67_403_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 判断图片是否已经被加载过，避免重复加载时不必要的消耗。这里以image数组的长度</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 作为是否已经加载的判断。</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_176_230_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_230_Open_Text.style.display='none'; Codehighlighter1_176_230_Closed_Image.style.display='inline'; Codehighlighter1_176_230_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_176_230_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_176_230_Closed_Text.style.display='none'; Codehighlighter1_176_230_Open_Image.style.display='inline'; Codehighlighter1_176_230_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.astImage.length </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_176_230_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_176_230_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />           </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> alert('Not reload');</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_265_311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_265_311_Open_Text.style.display='none'; Codehighlighter1_265_311_Closed_Image.style.display='inline'; Codehighlighter1_265_311_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_265_311_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_265_311_Closed_Text.style.display='none'; Codehighlighter1_265_311_Open_Image.style.display='inline'; Codehighlighter1_265_311_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_265_311_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_265_311_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.astImage[i] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Image();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.astImage[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].src </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.pic.pic0;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.astImage[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].src </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.pic.pic1;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> my_interval;<br /><img id="Codehighlighter1_424_435_Open_Image" onclick="this.style.display='none'; Codehighlighter1_424_435_Open_Text.style.display='none'; Codehighlighter1_424_435_Closed_Image.style.display='inline'; Codehighlighter1_424_435_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_424_435_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_424_435_Closed_Text.style.display='none'; Codehighlighter1_424_435_Open_Image.style.display='inline'; Codehighlighter1_424_435_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_424_435_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_424_435_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * 显示<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_475_966_Open_Image" onclick="this.style.display='none'; Codehighlighter1_475_966_Open_Text.style.display='none'; Codehighlighter1_475_966_Closed_Image.style.display='inline'; Codehighlighter1_475_966_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_475_966_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_475_966_Closed_Text.style.display='none'; Codehighlighter1_475_966_Open_Image.style.display='inline'; Codehighlighter1_475_966_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />myClass.prototype.create </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() </span><span id="Codehighlighter1_475_966_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_475_966_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.loadAssociateImage();<br /><img id="Codehighlighter1_553_953_Open_Image" onclick="this.style.display='none'; Codehighlighter1_553_953_Open_Text.style.display='none'; Codehighlighter1_553_953_Closed_Image.style.display='inline'; Codehighlighter1_553_953_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_553_953_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_553_953_Closed_Text.style.display='none'; Codehighlighter1_553_953_Open_Image.style.display='inline'; Codehighlighter1_553_953_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  my_interval </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> window.setInterval(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> () </span><span id="Codehighlighter1_553_953_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_553_953_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 变量g是myClass的全局变量，可以当作this看</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> length </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> g.astImage.length;<br /><img id="Codehighlighter1_662_946_Open_Image" onclick="this.style.display='none'; Codehighlighter1_662_946_Open_Text.style.display='none'; Codehighlighter1_662_946_Closed_Image.style.display='inline'; Codehighlighter1_662_946_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_662_946_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_662_946_Closed_Text.style.display='none'; Codehighlighter1_662_946_Open_Image.style.display='inline'; Codehighlighter1_662_946_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> length; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_662_946_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_662_946_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_701_730_Open_Image" onclick="this.style.display='none'; Codehighlighter1_701_730_Open_Text.style.display='none'; Codehighlighter1_701_730_Closed_Image.style.display='inline'; Codehighlighter1_701_730_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_701_730_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_701_730_Closed_Text.style.display='none'; Codehighlighter1_701_730_Open_Image.style.display='inline'; Codehighlighter1_701_730_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">g.astImage[i].complete) </span><span id="Codehighlighter1_701_730_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_701_730_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_745_940_Open_Image" onclick="this.style.display='none'; Codehighlighter1_745_940_Open_Text.style.display='none'; Codehighlighter1_745_940_Closed_Image.style.display='inline'; Codehighlighter1_745_940_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_745_940_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_745_940_Closed_Text.style.display='none'; Codehighlighter1_745_940_Open_Image.style.display='inline'; Codehighlighter1_745_940_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_745_940_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_745_940_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_779_819_Open_Image" onclick="this.style.display='none'; Codehighlighter1_779_819_Open_Text.style.display='none'; Codehighlighter1_779_819_Closed_Image.style.display='inline'; Codehighlighter1_779_819_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_779_819_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_779_819_Closed_Text.style.display='none'; Codehighlighter1_779_819_Open_Image.style.display='inline'; Codehighlighter1_779_819_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (i </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> length </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_779_819_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_779_819_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_838_930_Open_Image" onclick="this.style.display='none'; Codehighlighter1_838_930_Open_Text.style.display='none'; Codehighlighter1_838_930_Closed_Image.style.display='inline'; Codehighlighter1_838_930_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_838_930_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_838_930_Closed_Text.style.display='none'; Codehighlighter1_838_930_Open_Image.style.display='inline'; Codehighlighter1_838_930_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_838_930_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_838_930_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                clearInterval(my_interval);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> my process now</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />      补充一下对setInterval和setTimeout的说明：setInterval是让js每隔一段时间就运行某一函数一次，从js代码执行setInterval开始，这样直到注销（clearInterval）其为止；setTimeout是在js程序块执行终止以后，再隔一段时间调用某一函数，该函数只调用一次。<img src ="http://www.blogjava.net/howard/aggbug/42888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2006-04-24 20:36 <a href="http://www.blogjava.net/howard/archive/2006/04/24/42888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Dephi中使用TStream读写数据的技巧</title><link>http://www.blogjava.net/howard/archive/2005/07/15/7798.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Fri, 15 Jul 2005 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2005/07/15/7798.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/7798.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2005/07/15/7798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/7798.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/7798.html</trackback:ping><description><![CDATA[From: <A href="http://xuguohua.diy.myrice.com/skill/34.htm">http://xuguohua.diy.myrice.com/skill/34.htm</A>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 在Dephi中提供了一个抽象的数据类型TStream来支持对流式数据的操作。这些数据通常来自文件、数据库、内存对象、OLE对象等，TStream提供了统一、简洁的方法来进行数据的读写。在通常情况下，我们并不需要直接使用TStream类，对流式数据的读写封装在VCL控件的方法中。但是如果这些方法无法满足我们的要求，就需要自己手动控制数据的读写。 
<H3><FONT color=#a30004>一、 TStream的常用的方法和属性：</FONT></H3><FONT color=#ffffff>----</FONT> 1. function Read(var Buffer; Count: Longint): Longint; virtual; abstract 
<P><FONT color=#ffffff>----</FONT> 2. function Write(const Buffer; Count: Longint): Longint; virtual; abstract; 
<P><FONT color=#ffffff>----</FONT> 3. function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract; 
<P><FONT color=#ffffff>----</FONT> 4. property Position: Longint; 
<P><FONT color=#ffffff>----</FONT> 5. property Size: Longint 
<P><FONT color=#ffffff>----</FONT> Read，Write，Seek都是纯虚函数，提供了数据读写和定位的抽象的方法。Read方法将数据从Stream中读到Buffer缓冲区中，Write则实现相反的操作，返回值表示实际读写数据的大小。Seek提供了在Stream中移动数据指针的方法。参数Origin可以取soFromBeginning，soFromCurrent，soFromEnd 三个值，Offset是偏移量，返回值是当前Stream数据指针的位置。 
<P><FONT color=#ffffff>----</FONT> Position表示了数据指针在Stream中的位置。这个属性是可读写的，它实际上就是通过调用Seek方法实现的，所以实际使用时使用这个属性更为方便一些。Size属性表示当前Stream的大小，对于不同的Stream，有些时候是只读的。 
<H3><FONT color=#a30004>二、 Stream数据的读写。</FONT></H3><FONT color=#ffffff>----</FONT> 1. SaveToStream(Stream: TStream ); //将类中的数据写到Stream的当前位置中 
<P><FONT color=#ffffff>----</FONT> 2. LoadFromStream(Stream: TStream); //从当前位置读入Stream里的数据 
<P><FONT color=#ffffff>----</FONT> 实际使用时我们基本上只要使用上面两个函数就可以了。 
<H3><FONT color=#a30004>三、 例子</FONT></H3><FONT color=#ffffff>----</FONT> TStream的继承树图如图1所示(略)，实际使用时比较常用的是TFileStream，TMemoryStream，TblobStream，就以这三种流举一例说明具体用法。 
<P><FONT color=#ffffff>----</FONT> 创建一个窗体Form1，放置三个按钮btnRead，btnInvert，btnSave和一个文件打开对话框OpenDialog1以及数据控件DataSource1，Table1，test. 
<P><FONT color=#ffffff>----</FONT> 使用Dephi提供的Database Desktop创建一个表test，表里有一个字段域Image，数据库文件名存为test.db。在窗体上放置一个TDatabase控件dbTest，一个TTable控件Table1,一个DataSource控件DataSource1,一个TDBNavigator控件DBNavigator1。将dbTest与刚才Desktop创建的数据库相连，Table1的TableName属性设为test.db，DataSource1的DataSet属性设为Table1，DBNavigator1的DataSource属性设为DataSource1，VisibleButtons属性前四个设为TRUE。此外，将dbtest的Connected设为TRUE，Table1的Active属性设为TRUE，使得数据库一开始就处于打开状态。 
<P><FONT color=#ffffff>----</FONT> 事件代码编写如下： 
<P><FONT color=#ffffff>----</FONT> 1. btnRead的Click事件，这里演示了TFileStream的用法。 <PRE><FONT size=2>var
  MS: TFileStream;
begin
  if OpenDialog1.Execute then
  begin
MS:=TFileStream.Create
(OpenDialog1.FileName, fmOpenRead);
    Image1.Picture.Bitmap.LoadFromStream(MS);
    MS.Free;
  end;
end;</FONT>
</PRE><FONT color=#ffffff>----</FONT> 2. btnInvert的Click事件，这里演示了TMemoryStream的用法。其中使用了Invert函数，这是一个简单的将图象反色的函数（仅对真彩图象有效），它返回一个指向处理过的图象数据块的指针。 <PRE><FONT size=2>var
  M
S: TMemoryStream;
  pImage: pointer;
begin
  MS:=TMemoryStream.create;
  Image1.Picture.Bitmap.SaveToStream(MS);
  MS.Position:=0;
  pImage:=Invert(MS.Memory, MS.size); 
 //Memory属性是指向实际内存块的指针
  MS.Write(pImage^,MS.size);
  MS.Position:=0;         
 //上一行代码使指针移到了Stream末尾，所以要复位
  Image1.Picture.Bitmap.LoadFromStream(MS);
  FreeMem(pImage);			
  MS.Free;
end;</FONT>

<FONT size=2> Invert函数如下：
function TForm1.Invert
(pImage: pointer; size: Integer): pointer;
var
  pData, pMem: PChar;
  i: Integer;
begin
  pMem:=AllocMem(size);
  CopyMemory(pMem,pImage,size);
  pData:=pMem+54;
  for i:=0 to size-54-1 do
  begin
    pData^:=Char(not integer(pData^));
    pData:=pData+1;
  end;
  Result:=pMem;
end;</FONT>
</PRE><FONT color=#ffffff>----</FONT> 1. btnSave的Click事件，这里演示了TMemoryStream的另一种用法，将Stream中的数据写到数据库中去。 <PRE><FONT size=2>var
  MS: TMemoryStream;
begin
  MS:=TMemoryStream.create;
  Image1.Picture.Bitmap.SaveToStream(MS);
  MS.Position:=0;
  Table1.Append;   
 //在数据库中添加一条记录
  TBlobField(Table1.FieldbyName
('image')).LoadFromStream(MS);
  Table1.Post;	      
//将所作的更新写入数据库
end;</FONT>
</PRE><FONT color=#ffffff>----</FONT> 4. DBNavigator1的Click事件，这里演示了TBlobStream的用法，使用了和写入时不同的方法来读出数据库的图象数据。 <PRE><FONT size=2>var
  MS: TStream;
begin
  with Table1 do
  MS:=CreateBlobStream
(FieldbyName('image'),bmRead);
  Image1.Picture.Bitmap.
LoadFromStream(MS);
  MS.Free;
end;</FONT>
</PRE><FONT color=#ffffff>----</FONT> 现在你已经能够在文件，数据库，内存中任意读写数据流了。试试看吧！<img src ="http://www.blogjava.net/howard/aggbug/7798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2005-07-15 20:41 <a href="http://www.blogjava.net/howard/archive/2005/07/15/7798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库1</title><link>http://www.blogjava.net/howard/archive/2005/07/08/7378.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Fri, 08 Jul 2005 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2005/07/08/7378.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/7378.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2005/07/08/7378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/7378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/7378.html</trackback:ping><description><![CDATA[1，oracle，一句SQL<BR>&nbsp;&nbsp;&nbsp; 有2张表，一张权限信息表MODULE，员工权限表AUTHORITY。界面有2个ListBox A，B，要求B中列出某一个员工的权限，A中列出该员工没有的权限。如果将B中的权限取出，并拼一句SQL运行的结果给A，拼得SQL条件个数比较多，简单点可以这样写A对应的SQL：<BR>select&nbsp; MODULE.rowid,&nbsp; MODULE.*&nbsp; from&nbsp; MODULE, AUTHORITY <BR>where AUTHORITY.WORKERNO(+) = '员工号'&nbsp; <BR>and&nbsp; MODULE.SUBSYSID =&nbsp;&nbsp;AUTHORITY.SUBSYSID(+)<BR>and&nbsp; MODULE.MODULEID = AUTHORITY.MODULEID(+)<BR>and&nbsp; AUTHORITY.WORKERNO is null<BR>如果权限中所有父权限（上层权限）在A中总归显示（不考虑B中是否包含），可以再加一句<BR>and&nbsp; AUTHORITY.MODULEID(+)&nbsp; !=&nbsp; '父权限标识（具体的值，再MODULE中区分权限父子关系）'<BR><img src ="http://www.blogjava.net/howard/aggbug/7378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2005-07-08 17:08 <a href="http://www.blogjava.net/howard/archive/2005/07/08/7378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Toad学习Oracle</title><link>http://www.blogjava.net/howard/archive/2005/07/01/6993.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Fri, 01 Jul 2005 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2005/07/01/6993.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/6993.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2005/07/01/6993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/6993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/6993.html</trackback:ping><description><![CDATA[1，用Toad将Excel文件导入到数据库<BR>&nbsp;选择DataBase -&gt; Import -&gt; Table Data后，选定Schema和Table，点击show data显示Table中原有的内容。点击Execute Wizard，弹出导入的向导框，根据向导一路next就可以了，中间只要注意指定Excel中的列所对应的数据库的字段。<BR><BR>2，字符串的相加操作中,用符号"||"<BR>不如将字段A的第一位添加一个数字3，可以这样写：<BR>update my_table set my_table.A = '3' || my_table.A where ......<BR><BR>3，很多常用的内置函数<BR>substr()，substr('abcd',0,2)的值是'ab'<BR>trim()，将字段内容前后的空格去掉<BR>length()，查看字符串长度<BR>to_date('2005-7-5','yyyy-mm-dd')，根据格式，将字符串型的日期转换为date类型<BR><BR>4，Drop表格<BR>&nbsp; 在Schema Browser的Tables标签中，选择所要删除的表格,右键drop。有些情况下，可能表格被删除到了回收站(Recycle Bin)中，可以在Recycle Bin标签中选择表格并将他们彻底drop。<BR>&nbsp; 如何显示Recycle Bin标签：右键点击任意标签，比如Tables标签，Configure，显示出所有标签，在Recycle Bin的Visible栏中选择yes即。<img src ="http://www.blogjava.net/howard/aggbug/6993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2005-07-01 14:18 <a href="http://www.blogjava.net/howard/archive/2005/07/01/6993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]python入门（1）</title><link>http://www.blogjava.net/howard/archive/2005/05/19/4892.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Thu, 19 May 2005 13:23:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2005/05/19/4892.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/4892.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2005/05/19/4892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/4892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/4892.html</trackback:ping><description><![CDATA[阅读dive into python 第1－3章<img src ="http://blog.csdn.net/wxzh/aggbug/340319.aspx" width = "1" height = "1" /><br>文章来源:<a href='http://blog.csdn.net/wxzh/archive/2005/04/08/340319.aspx'>http://blog.csdn.net/wxzh/archive/2005/04/08/340319.aspx</a><img src ="http://www.blogjava.net/howard/aggbug/4892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2005-05-19 21:23 <a href="http://www.blogjava.net/howard/archive/2005/05/19/4892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]JBoss Portal RC released</title><link>http://www.blogjava.net/howard/archive/2005/05/13/4258.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Fri, 13 May 2005 04:30:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2005/05/13/4258.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/4258.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2005/05/13/4258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/4258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/4258.html</trackback:ping><description><![CDATA[The JBoss Portal team is proud to announce the release of JBoss Portal RC1. This release marks the first since the JBoss-Novell development teams merged on the project, and is a great milestone on the road to our Final due in early June.<br>文章来源:<a href='http://www.theserverside.com/news/thread.tss?thread_id=33838'>http://www.theserverside.com/news/thread.tss?thread_id=33838</a><img src ="http://www.blogjava.net/howard/aggbug/4258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2005-05-13 12:30 <a href="http://www.blogjava.net/howard/archive/2005/05/13/4258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]主流 Blog 程序整理</title><link>http://www.blogjava.net/howard/archive/2005/05/13/4256.html</link><dc:creator>howard</dc:creator><author>howard</author><pubDate>Fri, 13 May 2005 04:08:00 GMT</pubDate><guid>http://www.blogjava.net/howard/archive/2005/05/13/4256.html</guid><wfw:comment>http://www.blogjava.net/howard/comments/4256.html</wfw:comment><comments>http://www.blogjava.net/howard/archive/2005/05/13/4256.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/howard/comments/commentRss/4256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/howard/services/trackbacks/4256.html</trackback:ping><description><![CDATA[<P><FONT color=red>ASP</FONT></P>
<P>Dlog: <A href="http://webdream.duoluo.com/" target=_blank><FONT color=#999966>http://webdream.duoluo.com/ </FONT></A>国人开发的一个功能比较强大的Blog！还有一个Dlog的修改版 <A href="http://mytz.net/blog/" target=_blank><FONT color=#999966>http://mytz.net/blog</FONT></A>很漂亮，增加了很多实用的功能。</P>
<P>Misslog: <A href="http://www.misslog.com/blog" target=_blank><FONT color=#999966>http://www.misslog.com/blog</FONT></A> 多用户blog,每个blog可以有多个用户参与创作与维护！</P>
<P>Loveyuki's BLOG V1.01 <BR>Loveyuki's BLOG 是由 Loveyuki 自主开发的基于 ASP+Access 的小型单用户BLOG<BR>官方说明： <A href="http://www.loveyuki.com/blogview.asp?logID=68" target=_blank><FONT color=#999966>http://www.loveyuki.com/blogview.asp?logID=68</FONT></A><BR>程序下载： <A href="http://www.loveyuki.com/attachments/month_0403/!91c_lyblog.rar" target=_blank><FONT color=#999966>点击下载Loveyuki's BLOG</FONT></A><BR>还有个它的美化版 演示:<A href="http://www.zongyz.com/blog/" target=_blank><FONT color=#999966>http://www.zongyz.com/blog/</FONT></A><BR>下载 <A href="http://php.zongyz.com/loveyukiblog.rar" target=_blank><FONT color=#999966>http://php.zongyz.com/loveyukiblog.rar</FONT></A></P>
<P>oblog 0.9<BR>是多用户版本的Blog,实现了Blog的大部分功能，其中界面部分参考了iBlog和博客堂，编辑器部分使用了eWebEditor beta2.0免费版本。<BR>演示：<A href="http://www.oioj.net/blog/" target=_blank><FONT color=#999966>http://www.oioj.net</FONT></A><BR>下载：<A href="http://www.qingdong.com/down/oblog.rar" target=_blank><FONT color=#999966>http://www.qingdong.com/down/oblog.rar</FONT></A></P>
<P>Bo-Blog ：文本储存数据,模板技术做的不错，可以用标签，支持RSS1.0！<BR><A href="http://boblog.cc.to/" target=_blank><FONT color=#999966>http://boblog.cc.to/</FONT></A></P>
<P>Ublog: <A href="http://www.uapplication.com/demo/UblogAccess" target=_blank><FONT color=#999966>http://www.uapplication.com/demo/UblogAccess</FONT></A><BR>汉化版下载 <A href="http://www.9sk.net/blog/Ublog.rar"><FONT color=#999966>http://www.9sk.net/blog/Ublog.rar </FONT></A></P>
<P><FONT color=red>ASP.NET</FONT></P>
<P>iblog: <A href="http://justdn.org/product/iBlog/demo/" target=_blank><FONT color=#999966>http://justdn.org/product/iBlog/demo/ </FONT></A>冰冰工作室的作品！</P>
<P>DotText: <A href="http://scottwater.com/Dottext/default.aspx" target=_blank><FONT color=#999966>http://scottwater.com/Dottext/default.aspx</FONT></A></P>
<P>BlogX: <A href="http://www.simplegeek.com/CategoryView.aspx/BlogX" target=_blank><FONT color=#999966>http://www.simplegeek.com/CategoryView.aspx/BlogX </FONT></A></P>
<P><FONT color=red>PHP</FONT></P>
<P>b2： <A href="http://www.cafelog.com/" target=_blank><FONT color=#999966>http://www.cafelog.com </FONT></A>最出名的php blog,操作简单，容易上手<BR>b2evolution: <A href="http://www.b2evolution.net/" target=_blank><FONT color=#999966>http://www.b2evolution.net</FONT></A>B2多用户版<BR>wordpress：<A href="http://www.wordpress.org/" target=_blank><FONT color=#999966>http://www.wordpress.org </FONT></A>在B2的基础上开发的，添加了很多功能。<BR><IFRAME name=365 src="http://www.365.bz/copyright.html" width=0 height=0></IFRAME></P>
<P>pivot： <A href="http://www.pivotlog.net/" target=_blank><FONT color=#999966>http://www.pivotlog.net </FONT></A>PHP+XML，没有使用数据库，有中文语言包，但目前不支持双字节评论</P>
<P>nucleus：<A href="http://www.nucleuscms.org/" target=_blank><FONT color=#999966>http://www.nucleuscms.org </FONT></A>这个也是多用户，有中文语言包！</P>
<P>exBlogMix: <A href="http://exblog.126.com/" target=_blank><FONT color=#999966>http://exblog.126.com/</FONT></A> 国人开发的新程序，现在已经很完美了。</P>
<P>M-logger：<BR><A href="http://milkliker.51j.cn/" target=_blank><FONT color=#999966>http://milkliker.51j.cn/</FONT></A><BR>国人开发的，目前还比较简单，多用户，文本储存数据。</P>
<P>drupal： <A href="http://www.drupal.org/" target=_blank><FONT color=#999966>http://www.drupal.org </FONT></A>著名的开源程序，功能非常强大，多用户，有多种插件和皮肤下载！</P>
<P><BR>pmachine: <A href="http://www.pmachine.com/" target=_blank><FONT color=#999966>http://www.pmachine.com</FONT></A> 这个是最标准的blog！有中文语言包。多用户的是商业版，</P>
<P>serendipity： <A href="http://www.s9y.org/" target=_blank><FONT color=#999966>http://www.s9y.org</FONT></A> 新出来的blog，采取映射，看上去好像是生成html的，多用户，支持多种数据库，自带了WSYISWG编辑器！对目前对中文支持的不好！</P>
<P>bMachine：<A href="http://boastology.com/" target=_blank><FONT color=#999966>http://boastology.com</FONT></A> 同时支持文本数据库和MySQL数据库，支持中文搜索。</P>
<P>Plog v0.3（PHP+Mysql）<BR>官方网站 http://www.plogworld.org/<BR>这个是我见过最强大的PHP Blog程序，详细介绍在<BR><A href="http://www.laogui.com/blog/archives/000043.php" target=_blank><FONT color=#999966>这里</FONT></A>。</P>
<P>Plainslash：文本blog程序，带像册，支持rss，分离出了html模板文件，方便修改，中文和英文两个语言包！<BR><A href="http://www.51zhao.com/pl/news.php?user=plainslash" target=_blank><FONT color=#999966>http://www.51zhao.com/pl/news.php?user=plainslash</FONT></A></P>
<P><BR>myphpblog: <A href="http://www.myphpblog.org/" target=_blank><FONT color=#999966>http://www.myphpblog.org/ </FONT></A></P>
<P>sunlog: <A href="http://www.sunlog.org/"><FONT color=#999966>http://www.sunlog.org</FONT></A></P>
<P><FONT color=red>CGI</FONT></P>
<P>MT： <A href="http://www.movabletype.org/" target=_blank><FONT color=#999966>http://www.movabletype.org</FONT></A> 就是我现在用的，世界上用户最多的blog程序，自动生成html！后缀可以自己设置，支持文本数据库和mysql，mssql等！</P>
<P>Greymatter：是一个类似 Movable Type 的Blog程序，相关内容可以参考<A href="http://www.laogui.com/blog/archives/000059.php"><FONT color=#999966>这里</FONT></A>。<BR><BR>原文地址:&nbsp;<A href="http://www.laogui.com/blog/mt-tb.cgi/4">http://www.laogui.com/blog/mt-tb.cgi/4</A> <BR></P><img src ="http://www.cnblogs.com/dudu/aggbug/8862.html" width = "1" height = "1" /><br>文章来源:<a href='http://www.cnblogs.com/dudu/articles/8862.html'>http://www.cnblogs.com/dudu/articles/8862.html</a><img src ="http://www.blogjava.net/howard/aggbug/4256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/howard/" target="_blank">howard</a> 2005-05-13 12:08 <a href="http://www.blogjava.net/howard/archive/2005/05/13/4256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>