<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[我是程序员   -Shosh's Blog - 代码应用]]></title>
<link>http://www.wscxy.com/shosh/</link>
<description><![CDATA[]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[shosh.zhu@qisda.com(shosh)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>我是程序员   -Shosh&#39;s Blog</title>
	<url>http://www.wscxy.com/shosh/images/logos.gif</url>
	<link>http://www.wscxy.com/shosh/</link>
	<description>我是程序员   -Shosh&#39;s Blog</description>
</image>

			<item>
			<link>http://www.wscxy.com/shosh/article.asp?id=71</link>
			<title><![CDATA[特殊方法判断字符串长度是否为零引起的问题]]></title>
			<author>shosh.zhu@qisda.com(shosh)</author>
			<category><![CDATA[代码应用]]></category>
			<pubDate>Wed,26 Nov 2008 23:13:20 +0800</pubDate>
			<guid>http://www.wscxy.com/shosh/default.asp?id=71</guid>
		<description><![CDATA[<div>　　最近在做EVB的Porting,碰到了不少问题。最近碰到的问题是：刚把software load到EVB上去第一次开机的时候，可以顺利的开机进入MMI的各种Applet，可以在屏幕上看到各个Form的画面；不过之后关机后重新开机，各个开机必须跑的applet还是能够正常跑到，Form也能够正常创建，并成功push到rootform中去，但是屏幕上就是见不到有Form显示出来。目前已经经过多方确认第一次开机和之后的第n次开机，开机的流程是一样的，而因为第一次开机的时候一切正常，说明硬件方面也是没有问题的，但是手机里会有一些配置信息，applet可以读取或着写入，他们就是一些Item（variant的一部分），我们成为NV Item（NV就是非易失性的意思），使用IQConfig接口读写的，和windows的ini配置文件或注册表类似。按照如此的判断，第一次开机和之后开机比较可能引起差异的地方便是这些配置信息了，但是目前没有一款tool可以将手机或EVB上的NV Item快速导入到一个或几个文件中，所以今天写了下面的代码，让SetItem或GetItem的时候调用我写的那个函数，将写入或读出的数据、Item的ID和类型按照一定的格式写入到特定的文件中。</div>
<div>&nbsp;</div>
<div>
<div id="shoCodeAreaWscxy">
<ol id="shoCodeMain38ID" style="border-right: gray 1px solid; padding-right: 2px; border-top: gray 1px solid; padding-left: 2px; padding-bottom: 2px; margin: 0px; border-left: gray 1px solid; color: #2f4f4f; word-break: break-all; padding-top: 2px; border-bottom: gray 1px solid; font-family: Courier New; list-style-type: decimal; background-color: #dcf5dc">
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">#define</font>&nbsp;SETITEMFILE&nbsp;<font color="#800000">&quot;fs:/mod/setitem%d.dat&quot;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">#define</font>&nbsp;GETITEMFILE&nbsp;<font color="#800000">&quot;fs:/mod/getitem%d.dat&quot;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">#define</font>&nbsp;MAXPATHLEN&nbsp;<font color="#ff0000">30</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">char</font>&nbsp;pGetFile<font color="#800080"><b>[</b></font>MAXPATHLEN<font color="#800080"><b>]</b></font>&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800080"><b>{</b></font><font color="#ff0000">0</font><font color="#800080"><b>}</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">char</font>&nbsp;pSetFile<font color="#800080"><b>[</b></font>MAXPATHLEN<font color="#800080"><b>]</b></font>&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800080"><b>{</b></font><font color="#ff0000">0</font><font color="#800080"><b>}</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">char</font><font color="#4b0082">*</font>&nbsp;pSep&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800000">&quot;\r\n\r\n[%s:%d]---------------------size&nbsp;=&nbsp;%d:\r\n&quot;</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">#ifndef</font>&nbsp;RELEASEIF</span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">#define</font>&nbsp;RELEASEIF<font color="#800080"><b>(</b></font>p<font color="#800080"><b>)</b></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font>p<font color="#800080"><b>)</b></font>&nbsp;<font color="#800080"><b>{</b></font>&nbsp;IBASE_Release<font color="#800080"><b>((</b></font>IBase<font color="#4b0082">*</font><font color="#800080"><b>)(</b></font>p<font color="#800080"><b>))</b></font><font color="#4b0082">;</font>&nbsp;<font color="#800080"><b>(</b></font>p<font color="#800080"><b>)</b></font>&nbsp;<font color="#4b0082">=</font>&nbsp;NULL<font color="#4b0082">;</font>&nbsp;<font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">#endif</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">static</font>&nbsp;<font color="#0000ff">int</font>&nbsp;WriteItemToFile<font color="#800080"><b>(</b></font>boolean&nbsp;bSetItem<font color="#4b0082">,</font>&nbsp;uint32&nbsp;itemID<font color="#4b0082">,</font>&nbsp;<font color="#0000ff">char</font>&nbsp;<font color="#4b0082">*</font>pType<font color="#4b0082">,</font>&nbsp;<font color="#0000ff">void</font>&nbsp;<font color="#4b0082">*</font>pData<font color="#4b0082">,</font>&nbsp;<font color="#0000ff">int</font>&nbsp;length<font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;IShell&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#4b0082">*</font>pIShell&nbsp;<font color="#4b0082">=</font>&nbsp;AEE_GetShell<font color="#800080"><b>()</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;IFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#4b0082">*</font>pIFile&nbsp;<font color="#4b0082">=</font>&nbsp;NULL<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;IFileMgr&nbsp;&nbsp;&nbsp;&nbsp;<font color="#4b0082">*</font>pIFileMgr&nbsp;<font color="#4b0082">=</font>&nbsp;NULL<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">char</font><font color="#4b0082">*</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFilePath&nbsp;<font color="#4b0082">=</font>&nbsp;NULL<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">char</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempData<font color="#800080"><b>[</b></font><font color="#ff0000">100</font><font color="#800080"><b>]</b></font>&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800080"><b>{</b></font><font color="#ff0000">0</font><font color="#800080"><b>}</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">do</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFilePath&nbsp;<font color="#4b0082">=</font>&nbsp;bSetItem&nbsp;<font color="#4b0082">?</font>&nbsp;pSetFile&nbsp;<font color="#4b0082">:</font>&nbsp;pGetFile<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//&nbsp;Create&nbsp;File&nbsp;Manager</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ISHELL_CreateInstance<font color="#800080"><b>(</b></font>pIShell<font color="#4b0082">,</font>&nbsp;AEECLSID_FILEMGR<font color="#4b0082">,</font>&nbsp;<font color="#800080"><b>(</b></font><font color="#0000ff">void</font>&nbsp;<font color="#4b0082">**</font><font color="#800080"><b>)</b></font><font color="#4b0082">&amp;</font>pIFileMgr<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font>NULL&nbsp;<font color="#4b0082">==</font>&nbsp;pIFileMgr<font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font>&nbsp;EFAILED<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font><font color="#ff0000">0</font>&nbsp;<font color="#4b0082">==</font>&nbsp;<font color="#4b0082">*</font><font color="#800080"><b>(</b></font><font color="#0000ff">int</font><font color="#4b0082">*</font><font color="#800080"><b>)</b></font>pFilePath<font color="#800080"><b>)</b></font>&nbsp;<font color="#008000">//the&nbsp;same&nbsp;as&nbsp;0&nbsp;==&nbsp;STRLEN(pFilePath)</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">int</font>&nbsp;i&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#ff0000">0</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">while</font>&nbsp;<font color="#800080"><b>(</b></font>i<font color="#4b0082">++</font>&nbsp;<font color="#4b0082">&lt;</font>&nbsp;<font color="#ff0000">10</font><font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPRINTF<font color="#800080"><b>(</b></font>tempData<font color="#4b0082">,</font>&nbsp;<font color="#800080"><b>(</b></font><font color="#0000ff">const</font>&nbsp;<font color="#0000ff">char</font><font color="#4b0082">*</font><font color="#800080"><b>)(</b></font>bSetItem&nbsp;<font color="#4b0082">?</font>&nbsp;SETITEMFILE&nbsp;<font color="#4b0082">:</font>&nbsp;GETITEMFILE<font color="#800080"><b>)</b></font><font color="#4b0082">,</font>&nbsp;i<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//not&nbsp;there,so&nbsp;we&nbsp;can&nbsp;create&nbsp;it</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font><font color="#800080"><b>(</b></font>SUCCESS&nbsp;<font color="#4b0082">!=</font>&nbsp;IFILEMGR_Test<font color="#800080"><b>(</b></font>pIFileMgr<font color="#4b0082">,</font>&nbsp;<font color="#800080"><b>(</b></font><font color="#0000ff">const</font>&nbsp;<font color="#0000ff">char</font>&nbsp;<font color="#4b0082">*</font><font color="#800080"><b>)</b></font>tempData<font color="#800080"><b>))</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBGPRINTF<font color="#800080"><b>(</b></font><font color="#800000">&quot;%s&quot;</font><font color="#4b0082">,</font>&nbsp;tempData<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pIFile&nbsp;<font color="#4b0082">=</font>&nbsp;IFILEMGR_OpenFile<font color="#800080"><b>(</b></font>pIFileMgr<font color="#4b0082">,</font>&nbsp;tempData<font color="#4b0082">,</font>&nbsp;_OFM_Create<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font>NULL&nbsp;<font color="#4b0082">!=</font>&nbsp;pIFile<font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STRNCPY<font color="#800080"><b>(</b></font>pFilePath<font color="#4b0082">,</font>&nbsp;tempData<font color="#4b0082">,</font>&nbsp;MAXPATHLEN<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RELEASEIF<font color="#800080"><b>(</b></font>pIFile<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">break</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font><font color="#ff0000">0</font>&nbsp;<font color="#4b0082">==</font>&nbsp;<font color="#4b0082">*</font><font color="#800080"><b>(</b></font><font color="#0000ff">int</font><font color="#4b0082">*</font><font color="#800080"><b>)</b></font>pFilePath<font color="#800080"><b>)</b></font>&nbsp;<font color="#008000">//the&nbsp;same&nbsp;as&nbsp;0&nbsp;==&nbsp;STRLEN(pFilePath)</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font>&nbsp;EFAILED<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//start&nbsp;to&nbsp;write&nbsp;to&nbsp;the&nbsp;file</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pIFile&nbsp;<font color="#4b0082">=</font>&nbsp;IFILEMGR_OpenFile<font color="#800080"><b>(</b></font>pIFileMgr<font color="#4b0082">,</font>&nbsp;pFilePath<font color="#4b0082">,</font>&nbsp;_OFM_APPEND<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font>NULL&nbsp;<font color="#4b0082">==</font>&nbsp;pIFile<font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">break</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPRINTF<font color="#800080"><b>(</b></font>tempData<font color="#4b0082">,</font>&nbsp;pSep<font color="#4b0082">,</font>&nbsp;pType<font color="#4b0082">,</font>&nbsp;itemID<font color="#4b0082">,</font>&nbsp;length<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFILE_Write<font color="#800080"><b>(</b></font>pIFile<font color="#4b0082">,</font>&nbsp;tempData<font color="#4b0082">,</font>&nbsp;STRLEN<font color="#800080"><b>(</b></font>tempData<font color="#800080"><b>))</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFILE_Write<font color="#800080"><b>(</b></font>pIFile<font color="#4b0082">,</font>&nbsp;pData<font color="#4b0082">,</font>&nbsp;length<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><b>}</b></font>&nbsp;<font color="#0000ff">while</font><font color="#800080"><b>(</b></font><font color="#ff0000">0</font><font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;RELEASEIF<font color="#800080"><b>(</b></font>pIFile<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;RELEASEIF<font color="#800080"><b>(</b></font>pIFileMgr<font color="#800080"><b>)</b></font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font>&nbsp;SUCCESS<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#800080"><b>}</b></font>&nbsp;</span></li>
</ol>
</div>
</div>
<div>&nbsp;</div>
<div>　　因为每次开机都会生成一个读取的item数据文件和写入的item数据文件（要开机到一定程度，不是刚开就关），从上面的28行代码可以看出，一共可以支持10次以内的开机记录。在PC上使用simulator调试，也确实可以很正常的工作。不过在EVB上，发现会导致宕机，宕机的原因在Trace32上可以看到是由于第25行导致的。</div>
<div>&nbsp;</div>
<div>　　这里说一下第25行的目的，意思是要检测pFilePath的内容（实际对应全局变量<span style="color: black"><font color="#0000ff">char</font>&nbsp;pGetFile<font color="#800080"><b>[</b></font>MAXPATHLEN<font color="#800080"><strong>]</strong></font></span>或<span style="color: black"><font color="#0000ff">char</font>&nbsp;pSetFile<font color="#800080"><strong>[</strong></font>MAXPATHLEN<font color="#800080"><strong>]</strong></font></span>）不是空字符串。正常的做法正如注释所注，使用<font color="#008000"><span style="color: black">0&nbsp;<font color="#4b0082">==</font>&nbsp;STRLEN<font color="#4b0082"><b>(</b></font>pFilePath<font color="#4b0082"><strong>)</strong></font></span></font>的，不过当时觉得这样做的效率不高，所以使用了另一种做法，也就是现在的做法：<span style="color: black"><font color="#0000ff">if</font>&nbsp;<font color="#800080"><b>(</b></font><font color="#ff0000">0</font>&nbsp;<font color="#4b0082">==</font>&nbsp;<font color="#4b0082">*</font><font color="#800080"><b>(</b></font><font color="#0000ff">int</font><font color="#4b0082">*</font><font color="#800080"><b>)</b></font>pFilePath<font color="#800080"><strong>)</strong></font></span>，他会检测前面sizeof(int)个字节的内容是否都是0，如果都是0，则说明该字符串是空字符串，需要创建文件，否则不需要。虽然他在PC上跑得很正常，但是在EVB上，却宕掉了。</div>
<div>&nbsp;</div>
<div><span style="color: black">　　谁能够给我解释他宕机的原因？</span></div>
<div>&nbsp;</div>
<div>　　顺便简单介绍一下这个函数：这个函数每次在GetItem或SetItem的时候都会调用到，该函数会将相关的数据写到特定的文件上。</div>
<blockquote dir="ltr" style="margin-right: 0px">
<div>boolean&nbsp;bSetItem<font color="#4b0082">, 表明本次是在GetItem还是SetItem时调用的</font></div>
<div>uint32&nbsp;itemID<font color="#4b0082">, 当前GetItem或SetItem的Item的ID值</font></div>
</blockquote><blockquote>
<div><font color="#0000ff">char</font>&nbsp;<font color="#4b0082">*</font>pType<font color="#4b0082">,&nbsp;当前Item的类型（分为好几种类型的，比如Flash Item/EFS Item/NV Item等）</font></div>
</blockquote><blockquote dir="ltr" style="margin-right: 0px">
<div><font color="#0000ff">void</font>&nbsp;<font color="#4b0082">*</font>pData<font color="#4b0082">, 当前设置到Item或从Item得到的数据，可以是各种类型（包括复杂的结构体类型，也包括简单的字符串、布尔值、整型等）</font></div>
<div><font color="#0000ff">int</font>&nbsp;length<font color="#4b0082">, pData的字节数</font></div>
</blockquote>
<div>　　代码第四行<span style="color: black"><font color="#0000ff">char</font>&nbsp;pGetFile<font color="#800080"><b>[</b></font>MAXPATHLEN<font color="#800080"><b>]</b></font>&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800080"><b>{</b></font><font color="#ff0000">0</font><font color="#800080"><b>}</b></font><font color="#4b0082">;</font></span>用来存放当前GetItem的时候需要将数据写入的文件完整路径。</div>
<div>　　代码第五行<span style="color: black"><font color="#0000ff">char</font>&nbsp;pSetFile<font color="#800080"><b>[</b></font>MAXPATHLEN<font color="#800080"><b>]</b></font>&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800080"><b>{</b></font><font color="#ff0000">0</font><font color="#800080"><b>}</b></font><font color="#4b0082">;</font></span>用来存放当前SetItem的时候需要将数据写入的文件完整路径。</div>
<div>　　在有需要将Item数据保存到文件的时候，对应地通过判断这两个变量是否已经保存有路径信息（只要strlen()&gt; 0就说明有路径信息了），直接将数据保存到对应的文件即可，否则会在代码26-48行去创建新的文件。代码第28行规定了EFS中这类文件的最大个数。</div>
<div>　　代码第51行到56行将数据写入到对应的文件中去，其中第6行的<span style="color: black"><font color="#0000ff">char</font><font color="#4b0082">*</font>&nbsp;pSep&nbsp;<font color="#4b0082">=</font>&nbsp;<font color="#800000">&quot;\r\n\r\n[%s:%d]---------------------size&nbsp;=&nbsp;%d:\r\n&quot;</font><font color="#4b0082">;</font></span>规定了Item数据之间的格式。</div>
<div>　　56行纯粹地将读到的Item的数据写入到文件（这部分可能是无法用文本编辑器看到的，除非刚好是字符串数据）。</div>
<div>　　60行将打开的文件关闭。其他地方打开文件之后都会使用Close，这里只需要将pIFile release掉即可。</div>]]></description>
		</item>
		
			<item>
			<link>http://www.wscxy.com/shosh/article.asp?id=36</link>
			<title><![CDATA[shoPlayer网页背景音乐播放器指南]]></title>
			<author>shosh.zhu@qisda.com(shosh)</author>
			<category><![CDATA[代码应用]]></category>
			<pubDate>Tue,22 Jul 2008 19:15:08 +0800</pubDate>
			<guid>http://www.wscxy.com/shosh/default.asp?id=36</guid>
		<description><![CDATA[<p>本文将主要介绍shoPlayer网页背景播放器的安装使用方法。</p>
<p>shoPlayer网页背景播放器是本人(Shosh)于2007年年底到2008年年初完成的一款功能强大界面简单的播放器。它的主要特点有：<br />
1、页面跳转不影响音乐的正常播放，目前很多流行的嵌入在网页中的音乐播放器在页面跳转时会停止播放音乐，当新页面打开后重新载入音乐。使用frame设计，可以避免此问题的发生。不过一个缺点是地址栏的地址将锁定在播放器的页面地址，而隐藏了用户真正浏览的页面地址。<br />
2、支持单曲循环播放、多曲目连续播放和多曲目随机播放。所有播放曲目可以任意添加、修改、删除。<br />
3、支持曲目搜索与排序，曲目列表有翻页功能。<br />
4、最具特点的是：它支持显示歌词窗口，歌词会自动随播放进度滚动显示。<br />
5、界面简单，没有使用任何图片（使用webdings字体），可以动态显隐，隐藏时不占用页面空间，不影响页面的正常浏览。<br />
&nbsp;</p>
<p>如果你拥有自己的网站，并想使用该播放器，请看下面的内容：</p>
<p>一个最简单的方法是直接在自己的网站的每个页面加上下面的代码，虽然简单，但是在地址栏将出现wscxy网站的名字：</p>
<ol id="shoCodeMain41ID" style="border-right: gray 1px solid; padding-right: 2px; border-top: gray 1px solid; padding-left: 2px; padding-bottom: 2px; margin: 0px; border-left: gray 1px solid; color: #2f4f4f; word-break: break-all; padding-top: 2px; border-bottom: gray 1px solid; font-family: Courier New; list-style-type: decimal; background-color: #dcf5dc">
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#4b0082">&lt;</font>script&nbsp;language<font color="#4b0082">=</font><font color="#800000">&quot;javascript&quot;</font><font color="#4b0082">&gt;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#008000">&lt;!--</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">if</font><font color="#800080"><b>(</b></font>top<font color="#4b0082">.</font><font color="#000088">window</font><font color="#4b0082">.</font>name&nbsp;<font color="#4b0082">!=</font>&nbsp;<font color="#800000">&quot;ShoshWebPageBackgroundMusicPlayer&quot;</font>&nbsp;<font color="#4b0082">||</font>&nbsp;top<font color="#4b0082">.</font><font color="#000088">window</font>&nbsp;<font color="#4b0082">==</font>&nbsp;self<font color="#4b0082">.</font><font color="#000088">window</font><font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;top<font color="#4b0082">.</font><font color="#000088">document</font><font color="#4b0082">.</font><font color="#000088">location</font><font color="#4b0082">=</font><font color="#800000">&quot;http://www.wscxy.com/index.html?$$$&quot;</font>&nbsp;<font color="#4b0082">+</font>&nbsp;top<font color="#4b0082">.</font><font color="#000088">document</font><font color="#4b0082">.</font><font color="#000088">location</font>&nbsp;<font color="#4b0082">+</font>&nbsp;<font color="#800000">&quot;&amp;&amp;&quot;</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#0000ff">else</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#800080"><b>{</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;<font color="#0000ff">var</font>&nbsp;theWindow&nbsp;<font color="#4b0082">=</font>&nbsp;self<font color="#4b0082">.</font><font color="#000088">window</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;<font color="#0000ff">while</font>&nbsp;<font color="#800080"><b>(</b></font>theWindow&nbsp;<font color="#4b0082">!=</font>&nbsp;top<font color="#4b0082">.</font><font color="#000088">window</font>&nbsp;<font color="#4b0082">&amp;&amp;</font>&nbsp;theWindow<font color="#4b0082">.</font>parent<font color="#4b0082">.</font><font color="#000088">window</font>&nbsp;<font color="#4b0082">!=</font>&nbsp;top<font color="#4b0082">.</font><font color="#000088">window</font><font color="#800080"><b>)</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;theWindow&nbsp;<font color="#4b0082">=</font>&nbsp;theWindow<font color="#4b0082">.</font>parent<font color="#4b0082">.</font><font color="#000088">window</font><font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black">&nbsp;&nbsp;top<font color="#4b0082">.</font><font color="#000088">document</font><font color="#4b0082">.</font>title&nbsp;<font color="#4b0082">=</font>&nbsp;theWindow<font color="#4b0082">.</font><font color="#000088">document</font><font color="#4b0082">.</font>title<font color="#4b0082">;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#800080"><b>}</b></font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#008000">//--&gt;</font></span></li>
    <li style="padding-left: 6px; margin: 0px 0px 0px 50px; border-left: silver 2px ridge; line-height: 18px; background-color: #f5fffa"><span style="color: black"><font color="#4b0082">&lt;/</font>script<font color="#4b0082">&gt;</font>&nbsp;</span></li>
</ol>
<p>一个更好的办法是下载<a href="http://www.wscxy.com/shosh/uploads/shoPlayer.rar"><strong>附件(shoPlayer.rar)</strong></a>，解压后有两个文件，分别是shoPlayer.html和playList.js。不过里面有需要修改的代码，为说明方便，请打开<a target="_blank" href="http://www.wscxy.com/shosh/uploads/shoPlayerCode.htm"><strong>代码演示文件(shoPlayerCode.htm)</strong></a>。</p>
<p>1. 先确认shoPlayer.html在你网站中的存放位置，假如访问路径是http://www.mysite.com/shoPlayer.html，</p>
<p>1-1.找到代码第16行：按实际存放情况修改曲目列表文件路径。</p>
<p>1-2.找到代码第32行：因为现在默认的音乐播放模式为随机播放，想修改为单曲循环或按顺序播放请修改playKinds的值分别为1或2。</p>
<p>1-3.找到代码第171行，将http://www.wscxy.com/shosh/改成你的网站的默认首页地址，如http://www.mysite.com/index.aspx（注意，不是这个音乐播放器的地址）。其他地方就没有必要修改了，里面有注释，如果你熟悉代码，可以略作修改。不过请保留头部的版权信息，769行的地址为本页面地址，请不要修改。</p>
<p>按照以上的步骤完成后，用户只有访问到http://www.mysite.com/shoPlayer.html的时候才能够打开播放器，并打开默认网页http://www.mysite.com/index.aspx浏览你的网页，但是title显示的并不是你的网页的标题，用户如果直接打开你的网站的页面也无法加载播放器，所以需要做下面的步骤：将上面提到的最简单的安装本播放器的代码放置到你的网站的所有需要收听音乐的页面（对于一般blog可以考虑放在模板中，或是其他公用的模块中。使用pjBlog的用户可以考虑放在header.asp中），不过和简单安装播放器不同的是，需要将上面的代码第二行修改为你的播放器页面的地址，如http://www.mysite.com/shoPlayer.html。</p>
<p>（下一次再告诉大家如何添加修改播放列表，敬请期待）</p>]]></description>
		</item>
		
			<item>
			<link>http://www.wscxy.com/shosh/article.asp?id=31</link>
			<title><![CDATA[shoColorCode代码加亮程序更新记录]]></title>
			<author>shosh.zhu@qisda.com(shosh)</author>
			<category><![CDATA[代码应用]]></category>
			<pubDate>Fri,18 Jul 2008 19:26:33 +0800</pubDate>
			<guid>http://www.wscxy.com/shosh/default.asp?id=31</guid>
		<description><![CDATA[<p>shoColorCode代码加亮程序已经上传至本站，大家可以在线使用了。</p>
<p>（<a target="_blank" href="http://www.wscxy.com/shosh/shoWorks/shoColorCode/shoColorer.html"><strong>在线使用shosh的代码加亮程序</strong></a>）</p>
<p>为使更好地使用该程序，推荐使用IE浏览器。</p>
<p>简要说明如下：</p>
<p><strong>tab size</strong>：指定tab的缩进量，有效值2-32，默认为8，输入无效时会设置为默认值。</p>
<p><strong>简单</strong>：生成的代码的简单程度，即一下标点符号不加亮，数字不加亮。</p>
<p><strong>共用CSS</strong>：可以生成较简洁的代码，如果需要粘贴到其他地方，一般需要将其取消，或是将CSS一起拷贝过去。</p>
<p><strong>复制</strong>：复制有三种，一种是左键点击一下&ldquo;复制&rdquo;按钮，一种是左键双击&ldquo;复制&rdquo;按钮，不同在与单击会将外层的代码一起复制到剪切板，而双击只复制内部的代码的剪切板，一般双击即可。第三种就是直接手动选中生成的代码区域，然后CTRL+C复制，这对于要将结果粘贴到不能够直接粘贴代码的地方的情况很有用，比如要粘贴到outlook或是email或是论坛的多功能编辑框等。</p>
<p><strong>保存</strong>：该功能将生成的加亮代码保存为网页。保存时推荐选中&ldquo;共用CSS&rdquo;选项，这样保存下来的文件会相对较小。</p>
<p>另外提醒大家的是，如果加亮的代码较长，比如有几千行，推荐先设置好各种选项后再将代码粘贴到编辑框。因为每做一次改动都会重新生成加亮代码，会占用较长时间。</p>
<p>&nbsp;</p>
<p>shoColorCode代码加亮程序更新记录：（<a target="_blank" href="http://www.wscxy.com/shosh/uploads/shoCode7.5.htm"><strong>查看V7.5生成的demo</strong></a>）</p>
<p>V7.5 -2007.07.18<br />
修改关键字替换方法使更具灵活性。正确匹配正则和正负浮点数（过滤匹配变量$1等中的数字，自动识别+-符号含义）。/\//无法通过此法修正。</p>
<p>V7.3 -2008.07.17<br />
让js的正则表达高亮显示，但是存在的问题是和注释的冲突，比如如下的正则不会识别，而识别成注释<br />
/\// 后面的//被解释成注释，那么这个就不被认为是注释了。不过/\/*/应该不会有问题，因为如果前面没有匹配的/*，不会被当成注释的*/<br />
另外如var a = 3 / 4 / 5;这样的语句中间部分会被当成是正则表达式。</p>
<p>V7.2 -2008.07.16<br />
支持//单行注释的\连接（实际上当以\n作为结尾的判断，\连接均有效，目前只有单行注释[\\和&lt;!--]有这样使用）<br />
将字体从Fixedsys改为Courier New</p>
<p>V7.1<br />
完全兼容网页制作上的需求了。<br />
修正js的规则：&lt;!--等同地解释成//</p>
<p>V7.0<br />
考虑网站发布的因素，设置默认共用CSS，并将LI的ID设为scli。<br />
增加生成简单代码的选项，简单代码不会使一般的操作符号或数字变色。</p>
<p>V6.6<br />
因为js代码压缩的时候，会造成一下代码错误：<br />
if(true)<br />
&nbsp;a = 1;<br />
else<br />
&nbsp;a = 3;<br />
也就是说，else后面如果不加{}，往往会造成错误。为避免此错误，将所有的允许不加{}的语句加上了{}。</p>
<p>V6.5<br />
将作者的网站改为<a href="http://www.wscxy.com">http://www.wscxy.com</a><br />
函数后加分号</p>
<p>V6.4<br />
发现在firefox中（ie中当然是没有问题的啦）当内容中没有匹配rule的内容的时候，内容输出会少掉（显示不出来），最后才发现原来是substr惹的祸，在firefox中需要明确指定字符串截取的起始和结束位置，而ie中却支持默认的，比如只传入一个参数，则从该参数的位置其到最后，而firefox只返回一个字符&hellip;&hellip;-1在ie中有特殊的表示，而firefox中则没有。所以此版本修正了此问题。<br />
另外为了不使用firefox中不支持的event.srcElement，textarea中tab的缩进取消了该方法，而直接使用对象传入，不过因为还有其他的东西firefox无法支持，所以即使这样修改后在firefox中还是没法使用该功能的，而对ie没有什么影响。</p>
<p>V6.2<br />
还是\r\n的问题，当直接默认\n为换行符而忽略\r的话，在IE中，/^\n/将不匹配新行。现在的作做法是直接将所有的\r删除，然后直接把\n作为换行符，这样不管是IE下还是firefox下，都不会有问题了。</p>
<p>V6.0<br />
之前的版本都使用\r\n作为回车标记，但是firefox的回车标记是\n，而且在ie下，直接使用\n作为回车标记也是成立的，所以在该版本中，使用\n作为回车标记，需要测试的是ie下是否全部成立。尤其是有使用/^\r\n/换成/^\n/之后。</p>
<p>V5.5<br />
发现在VC中，#define #if等#开头的特殊符号之后可以有空格或\t，该版本使之有效。另外修改了以下CPP和C#中的关键字的颜色，修改使用蓝色。</p>
<p>之前：<br />
shoColorCode可以将C、C++、C#、JavaScript、CSS、HTML、XML等语言或脚本（可以扩充）进行转化，转化生成标准的HTML代码，方便用户尤其是博客用户将代码发布到网上。转化时不仅可以保持代码原有的排版格式，还可以自己定义转换后Tab的大小（用几个空格来代替），并且不会因为tab之前的其他字符影响排版。另外，用户还可以选择是否生成行号，工具会给各种关键字或符号进行区分着色。如若发布的是一般的网页代码（可能不光只有HTML代码，或许还有CSS或/和JavaScript），工具会首先自动识别代码类型，再分别对各个部分的代码进行各自的转化。最后，用户可以选择将转换后的代码保存为单独的网页。</p>
<p>更早：<br />
对于程序员来讲，常常需要将自己的代码放到网页上让大家去阅读（尤其是写blog的），我也不例外。现在有些blog的编辑器提供插入代码的功能，但是有些blog没有。对于一般的用户而言，这个功能并不重要，但是对于程序员来说，有了这个功能，可以很方便将代码插入到网页中去，如果缺少了该功能，插入代码将是很痛苦的一件事情，尤其是\t（tab）的处理。因为网页并不完全支持tab，这样粘贴进来的代码将失去原来的格式。而对于就提供该功能编辑器而言，多数是在服务器端完成对代码的处理的（使用asp.net之类的）。本人使用javascript实现了该功能，而且可以很方便地定义各种类型的&ldquo;关键字&rdquo;和符号，可以对多种语言进行转换（只要知道该语言的语法规则）。另外，该工具还支持行号显示选择、自定义tabSize等功能。目前已经支持js/c/cpp/c#等语言的转换。稍候将会对html/xml提供支持。</p>
<p>使用js对各种代码进行转换，转换为html代码，方便web发布。 <br />
支持各种&ldquo;关键字&rdquo;和&ldquo;符号&rdquo;的定义 <br />
支持Tab Size 自定义 <br />
支持行号显示选择</p>]]></description>
		</item>
		
</channel>
</rss>
