<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>佳名猫的软件之家</title>
  <link>http://jiamingsoft.yourblog.org</link>
  <description><![CDATA[]]></description>
  <generator> by blogbus.com </generator>
  <lastBuildDate>Thu, 01 Jan 1970 07:00:00 +0700</lastBuildDate>
  <image>
									<url>http://public.blogbus.com/images/head.gif</url>
									<title>佳名猫的软件之家</title>
									<link>http://jiamingsoft.yourblog.org</link>
								</image>  <item>
   <title>BCB中管道应用示例</title>
   <description><![CDATA[//---------------------------------------------------------------------------<br />
<br />
#include &lt;vcl.h&gt;<br />
#pragma hdrstop<br />
<br />
#include "Unit1.h"<br />
//---------------------------------------------------------------------------<br />
#pragma package(smart_init)<br />
#pragma resource "*.dfm"<br />
TForm1 *Form1;<br />
//---------------------------------------------------------------------------<br />
__fastcall TForm1::TForm1(TComponent* Owner)<br />
        : TForm(Owner)<br />
{<br />
}<br />
//---------------------------------------------------------------------------<br />
bool __fastcall TForm1::RunCmd(AnsiString cmd,TStringList *stringlist)<br />
{<br />
    TMemoryStream *memstream=new TMemoryStream();<br />
    AnsiString rn="\\r\\n";<br />
    PROCESS_INFORMATION proc;<br />
    STARTUPINFO start;<br />
    SECURITY_ATTRIBUTES sa;<br />
    long ret;<br />
    unsigned long lngBytesread;<br />
    HANDLE hReadPipe,hWritePipe;<br />
    char *strBuff=(char *)malloc(256);<br />
    if(strBuff==NULL)<br />
    {<br />
        return false;<br />
    }<br />
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);<br />
    sa.bInheritHandle=true;<br />
    sa.lpSecurityDescriptor=NULL;<br />
    ret=CreatePipe(&hReadPipe,&hWritePipe,&sa,0);<br />
    if(ret==0)<br />
    {<br />
        //创建管道失败<br />
        ShowMessage("创建管道失败");<br />
        return false;<br />
    }<br />
    memset(&start,0x00,sizeof(STARTUPINFO));<br />
    start.cb=sizeof(STARTUPINFO);<br />
    start.dwFlags=STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;<br />
    start.hStdOutput=hWritePipe;<br />
    start.hStdError=hWritePipe;<br />
    bool retc=CreateProcess(NULL,cmd.c_str(),NULL,NULL,true, 0, 0, NULL, &start, &proc);<br />
    if(!retc)<br />
    {<br />
        return false;<br />
    }<br />
    CloseHandle(hWritePipe);<br />
    unsigned long len;<br />
    memstream-&gt;Position=0;<br />
    while(true)<br />
    {<br />
        memset(strBuff,0x00,256);<br />
        GetFileSize(hReadPipe,&len);<br />
        ret = ReadFile(hReadPipe, strBuff, 256, &lngBytesread,NULL);<br />
        if(ret==0)<br />
        {<br />
            break;<br />
        }<br />
        else<br />
        {<br />
            memstream-&gt;Write(strBuff,lngBytesread);<br />
        }<br />
    }<br />
    CloseHandle(proc.hProcess);<br />
    CloseHandle(proc.hThread);<br />
    CloseHandle(hReadPipe);<br />
    memstream-&gt;Position=0;<br />
    free(strBuff);<br />
    stringlist-&gt;LoadFromStream(memstream);<br />
    memstream-&gt;Clear();<br />
    delete memstream;<br />
    return true;<br />
}<br />
void __fastcall TForm1::Button1Click(TObject *Sender)<br />
{<br />
TStringList *StrList=new TStringList;<br />
AnsiString strcmd=Edit1-&gt;Text;<br />
RunCmd(strcmd,StrList);<br />
Memo1-&gt;Clear();<br />
Memo1-&gt;Text=StrList-&gt;Text;<br />
}<br />
//---------------------------------------------------------------------------<br />
<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/157999.html">皮肤技术研究</a> 2004-04-24</div><div><a href="http://jiamingsoft.yourblog.org/logs/152294.html">Winamp插件研究[转自CSDN]</a> 2004-04-18</div><div><a href="http://jiamingsoft.yourblog.org/logs/143811.html">LRC格式歌词分解程序</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/144415.html">Unicode编码文件的读取</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/135845.html">鼠标轨迹记录器</a> 2004-04-03</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F428840.html&title=BCB%E4%B8%AD%E7%AE%A1%E9%81%93%E5%BA%94%E7%94%A8%E7%A4%BA%E4%BE%8B">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/428840.html</link>
   <author>佳名猫</author>
   <pubDate>Sat, 03 Sep 2005 11:31:06 +0800</pubDate>
  </item>
  <item>
   <title>媒体播放器＝＝开发中。。。</title>
   <description><![CDATA[[face07]基于winamp插件解码模块，皮肤技术还在继续开发，目前已经有基本雏形了<br />
<br />
<br />
<br />
下载地址：下载媒体播放器内部版<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/135831.html">C语言写的贪吃蛇</a> 2004-04-03</div><div><a href="http://jiamingsoft.yourblog.org/logs/135803.html">歌词串串烧</a> 2004-04-03</div><div><a href="http://jiamingsoft.yourblog.org/logs/134952.html">发布＝图书助理＝测试版</a> 2004-04-02</div><div><a href="http://jiamingsoft.yourblog.org/logs/133994.html">图书助理－－正在开发中。。。</a> 2004-04-02</div><div><a href="http://jiamingsoft.yourblog.org/logs/133474.html">完成了对Color Wheel的开发</a> 2004-04-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F171407.html&title=%E5%AA%92%E4%BD%93%E6%92%AD%E6%94%BE%E5%99%A8%EF%BC%9D%EF%BC%9D%E5%BC%80%E5%8F%91%E4%B8%AD%E3%80%82%E3%80%82%E3%80%82">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/171407.html</link>
   <author>佳名猫</author>
   <pubDate>Fri, 07 May 2004 08:28:43 +0800</pubDate>
  </item>
  <item>
   <title>皮肤技术研究</title>
   <description><![CDATA[做播放器的话，嘿嘿，当然离不开皮肤技术了。。。<br />
<br />
[face01]实现皮肤技术有很多种方法，最简单的就是用第三方控件或者皮肤类，但别人的东西终究还是别人的东西，要不就是收费，要不就是有很多限制，所以，好东西呢，还是自己造比较好。。[face07]<br />
<br />
自己实现皮肤的话，首先要解决的就是不规则窗体的问题，因为皮肤界面千变万化，所以窗体是必须要适应皮肤变化的，这个实现起来比较容易，用几个API函数就可以实现了<br />
分别是：<br />
CreateRect（） //当然还有别的API函数，用来创建多边形等，这个是创建矩形区域的<br />
RgnCombineRgn（）  //区域运算用的，主要是把不需要的区域删除，留下需要的界面<br />
SetWindowRgn（）  //用来重新设置窗体区域<br />
<br />
比如：现在要根据当前Image里的图片创建不规则窗体<br />
int x,y; HRGN WndRgn,TempRgn;<br />
WndRgn=CreateRectRgn(0,0,Image1-&gt;Width,Image1-&gt;Height);<br />
for(x=0;x&lt;Width;x++)<br />
for(y=0;y&lt;Height;y++)<br />
if(Image1-&gt;Canvas-&gt;Pixels[x][y]==clBlack)<br />
{<br />
TempRgn=CreateRectRgn(x,y,x+1,y+1);  创建需要删除的区域，以象素为单位<br />
CombineRgn(WndRgn,WndRgn,TempRgn,RGN_XOR);  剔除不必要的区域<br />
DeleteObject(TempRgn);<br />
}<br />
SetWindowRgn(Handle,WndRgn,true);<br />
<br />
就这么简单。。。<br />
<br />
至于按钮之类的，原理和这个都一样，不过要先创建一个所以图片，用来确定按钮在界面中的位置<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/428840.html">BCB中管道应用示例</a> 2005-09-03</div><div><a href="http://jiamingsoft.yourblog.org/logs/152294.html">Winamp插件研究[转自CSDN]</a> 2004-04-18</div><div><a href="http://jiamingsoft.yourblog.org/logs/143811.html">LRC格式歌词分解程序</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/144415.html">Unicode编码文件的读取</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/137586.html">C语言写的贪吃蛇</a> 2004-04-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F157999.html&title=%E7%9A%AE%E8%82%A4%E6%8A%80%E6%9C%AF%E7%A0%94%E7%A9%B6">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/157999.html</link>
   <author>佳名猫</author>
   <pubDate>Sat, 24 Apr 2004 06:37:53 +0800</pubDate>
  </item>
  <item>
   <title>Winamp插件研究[转自CSDN]</title>
   <description><![CDATA[近来想做一个播放器，找了很久一直都找不到理想的解码器，不过最后还是想到winamp的插件。。。<br />
[face10]既然winamp基于插件来完成解码，那么它就一定有解码器，只要找到它的接口就可以是使用了<br />
<br />
去官方网站下载winamp的SDK，终于得知它的解码工作交给相应的Input插件模块。<br />
在 Pulgin 文件夹中有很多的 DLL(动态链接库)文件，其中的in_mp3.dll就是mp3的解码插件，这个插件可以解码AAC/Mpeg1/mpeg2/mpeg3的音频，还有一个in_wm.dll自然就是解码WMA的了<br />
<br />
从SDK文档中得知，每种插件都具有固定的数据结构，如Input模块的数据结构（In_Module ），Output模块的（Out_Module ），同时每种插件的dll都具有约定的入口函数，对于Input插件，其入口函数为<br />
__declspec( dllexport ) In_Module * winampGetInModule2()<br />
<br />
其结构体：<br />
typedef struct <br />
{<br />
 int nVer; // 模块版本号<br />
 char *szDesc; //模块描述信息<br />
 HWND hMainWnd; // Winamp的主窗体句柄（由Winamp来填写）<br />
 HINSTANCE hDllInstance;  // DLL实例句柄（由Winamp来填写）<br />
 char *szFileExt; // 扩展名过滤器，格式参见GetOpenFileName<br />
 int nIsSeekable; // 是否可索引媒体，是-你可以拖动进度条，否-反之<br />
 int UsesOutputPlug; // 是否使用输出插件？你想在这个模块里搞定一切？<br />
<br />
// 下面都是函数指针，将被Winamp调用<br />
 void (*Config)(HWND hwndParent); // 配置对话框<br />
 void (*About)(HWND hwndParent);  // 关于对话框<br />
 void (*Init)();  // 初始化<br />
 void (*Quit)();  // 退出<br />
 // szFile - 传入的文件名，szTitle - 传出的标题，nLen - 转出的时间长度，毫秒。<br />
 // 如果szFile传NULL，则返回当前播放文件的信息<br />
 void (*GetFileInfo)(char *szFile, char *szTitle, int *nLen);<br />
 int (*InfoBox)(char *szFile, HWND hwndParent); // 弹出文件信息对话框<br />
 int (*IsOurFile)(char *szFile); // 检查文件格式<br />
 int (*Play)(char *szFile); // 开始播放文件szFile，返回0正常，-1错误<br />
 void (*Pause)(); // 暂停处理<br />
 void (*UnPause)(); // 取消暂停<br />
 int (*IsPaused)(); // 是否斩停？1是暂停，0不是<br />
 void (*Stop)();  // 停止播放<br />
 int (*GetLength)(); // 取得长度，毫秒单位<br />
 int (*GetOutputTime)();  // 获取当前时间，一般调用out模块的同名函数即可<br />
 void (*SetOutputTime)(int nTime); // 索引到某一时刻<br />
 void (*SetVolume)(int volume); // 音量调节，从0 - 255<br />
 void (*SetPan)(int pan); // 左右声道平衡，从-127 - 127<br />
 <br />
//下面的函数多和AVS、可视化效果、均衡器等有关，具体咱们用不到，就暂时不讲了。<br />
 void (*SAVSAInit)(int maxlatency_in_ms, int srate);<br />
 void (*SAVSADeInit)(); // call in Stop()<br />
 void (*SAAddPCMData)(void *PCMData, int nch, int bps, int timestamp); <br />
 int (*SAGetMode)();<br />
 void (*SAAdd)(void *data, int timestamp, int csa);<br />
 void (*VSAAddPCMData)(void *PCMData, int nch, int bps, int timestamp);<br />
 int (*VSAGetMode)(int *specNch, int *waveNch);<br />
 void (*VSAAdd)(void *data, int timestamp);<br />
 void (*VSASetInfo)(int nch, int srate);<br />
 int (*dsp_isactive)(); <br />
 int (*dsp_dosamples)(short int *samples, int numsamples, int bps, int nch, int srate);<br />
 void (*EQSet)(int on, char data[10], int preamp);<br />
 void (*SetInfo)(int bitrate, int srate, int stereo, int synched);<br />
<br />
 Out_Module *outMod; // 看看，Winamp终于露出马脚了吧？<br />
} In_Module;<br />
<br />
<br />
这样通过这个入口函数，就可以轻易的得到了Input插件的 In_Module结构体，接下来的事情自然也就很容易了，有了这个结构体，插件的所有功能都可以调用了。<br />
<br />
不过单凭这个Input插件还是不能放出声音来的，因为Input插件虽然能完成mp3或者WMA的解码，但却没有把他们输出来，所以，就得自己写输出模块。不过，winamp有个OutPut插件可以完成输出功能，这就是Out_Wave.dll，加上这个插件，那么播放mp3就非常容易了。<br />
<br />
OutPut插件得入口函数<br />
__declspec( dllexport ) Out_Module * winampGetOutModule()<br />
其结构体为：Out_Module <br />
typedef struct <br />
{<br />
// 下面有些和In_Module一样，就不赘述了。<br />
 int nVer;<br />
 char *szDesc;<br />
 int nId; // 自己给一个ID，不知道有什么用，反正大于65536就行了。<br />
 HWND hMainWindow;<br />
 HINSTANCE hDllInstance;<br />
 void (*Config)(HWND hwndParent);<br />
 void (*About)(HWND hwndParent);<br />
 void (*Init)();<br />
 void (*Quit)();<br />
 // nSample - 采样率， nChannels - 声道数，1或2<br />
 // nBitPerSamp - 每采样的位率，nBufLen、nPreBufLen - 缓冲长度，咱们用不到<br />
 // 返回大于0正常播放，小于0失败<br />
 int (*Open)(int nSample, int nChannels, int nBitPerSamp, int nBufLen, int nPreBufLen); <br />
 void (*Close)(); // 关闭输出设备<br />
 // pBuf - 内存数据块，nLen - 数据块的长度<br />
 int (*Write)(char *pBuf, int len); // 返回0成功<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/428840.html">BCB中管道应用示例</a> 2005-09-03</div><div><a href="http://jiamingsoft.yourblog.org/logs/157999.html">皮肤技术研究</a> 2004-04-24</div><div><a href="http://jiamingsoft.yourblog.org/logs/143811.html">LRC格式歌词分解程序</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/144415.html">Unicode编码文件的读取</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/135831.html">C语言写的贪吃蛇</a> 2004-04-03</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F152294.html&title=Winamp%E6%8F%92%E4%BB%B6%E7%A0%94%E7%A9%B6%5B%E8%BD%AC%E8%87%AACSDN%5D">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/152294.html</link>
   <author>佳名猫</author>
   <pubDate>Sun, 18 Apr 2004 09:47:56 +0800</pubDate>
  </item>
  <item>
   <title>LRC格式歌词分解程序</title>
   <description><![CDATA[作为1.12版歌词串串烧的一个模块，主要用来分解LRC格式的歌词，该模块已经完全封装为一个类，方便调用<br />
<br />
<br />
下面是LRC格式的描述<br />
<br />
LRC 歌词是一种包含着“[*:*]”形式的“标签(tag)”的、基于纯文本的歌词专用格式。最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来实现卡拉OK功能（需要专门程序），又能以普通的文字处理软件查看、编辑。当然，实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。以下具体介绍LRC格式中的“标签”。 <br />
时间标签（Time-tag） <br />
形式为"[mm:ss]"或"[mm:ss.fff]"（分钟数:秒数）。数字须为非负整数，比如"[12:34.5]"是有效的，而"[0x0C:-34.5]"无效。 <br />
<br />
它可以位于某行歌词中的任意位置。一行歌词可以包含多个时间标签（比如歌词中的迭句部分）。根据这些时间标签，用户端程序会按顺序依次高亮显示歌词，从而实现卡拉OK功能。另外，标签无须排序。 <br />
<br />
标识标签（ID-tags） <br />
<br />
其格式为"[标识名:值]"。大小写等价。以下是预定义的标签。 <br />
<br />
[ar:艺人名]<br />
[ti:曲名]<br />
[al:专辑名]<br />
[by:编者（指编辑LRC歌词的人）]<br />
[offset:时间补偿值] 其单位是毫秒，正值表示整体提前，负值相反。这是用于总体调整显示快慢的。 <br />
<br />
样例 <br />
<br />
[ar:unknown]<br />
[ti:sample]<br />
[al:none]<br />
[by:me]<br />
[01:02.355][00:00]This line should be sung twice<br />
[00:05.7]And this one... once only.<br />
<br />
<br />
开发标准(供程序员阅读参考) <br />
<br />
以下列出了开发支持LRC格式的软件时应遵守的一些标准。 <br />
<br />
无论是否在行首，行内凡具有“[*:*]”形式的都应认为是标签。（注意：其中的冒号并非全角字符“：”） <br />
凡是标签都不应显示。 <br />
凡是标签，且被冒号分隔的两部分都为非负数，则应认为是时间标签。因此，对于非标准形式（非“[mm:ss]”）的时间标签也应能识别（如“[0:0]”）。 <br />
凡是标签，且非时间标签的，应认为是标识标签。 <br />
标识名中大小写等价。 <br />
为了向后兼容，应对未定义的新标签作忽略处理。另应对注释标签（[:]）后的同一行内容作忽略处理。 <br />
应允许一行中存在多个标签，并能正确处理。 <br />
应能正确处理未排序的标签。<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/428840.html">BCB中管道应用示例</a> 2005-09-03</div><div><a href="http://jiamingsoft.yourblog.org/logs/157999.html">皮肤技术研究</a> 2004-04-24</div><div><a href="http://jiamingsoft.yourblog.org/logs/152294.html">Winamp插件研究[转自CSDN]</a> 2004-04-18</div><div><a href="http://jiamingsoft.yourblog.org/logs/144415.html">Unicode编码文件的读取</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/137593.html">完成了对Color Wheel的开发</a> 2004-04-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F143811.html&title=LRC%E6%A0%BC%E5%BC%8F%E6%AD%8C%E8%AF%8D%E5%88%86%E8%A7%A3%E7%A8%8B%E5%BA%8F">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/143811.html</link>
   <author>佳名猫</author>
   <pubDate>Sun, 11 Apr 2004 11:43:32 +0800</pubDate>
  </item>
  <item>
   <title>Unicode编码文件的读取</title>
   <description><![CDATA[Unicode就是宽字符编码，它与ANSI编码最大的不同就是一个ANSI编码的位宽是8位，而Unicode的位宽是16位，比如：一个Unicode编码的字符 ’A’ 其16进制编码为0x0041，而同样的字符用ANSI编码就会表示为0x41；<br />
<br />
转入正题，不去管Unicode的编码方式，只要能把它识别出来就可以了。Windows SDK中提供了一个API函数，可以把ASCII编码转换为Unicode编码，那就是WideCharToMultiByte()函数，所以编码转换工作就全部交给这个函数了<br />
<br />
看一下WideCharToMultiByte()的原型声明：<br />
int WideCharToMultiByte(<br />
<br />
    UINT CodePage,	// code page <br />
    DWORD dwFlags,	// performance and mapping flags <br />
    LPCWSTR lpWideCharStr,	// address of wide-character string <br />
    int cchWideChar,	// number of characters in string <br />
    LPSTR lpMultiByteStr,	// address of buffer for new string <br />
    int cchMultiByte,	// size of buffer <br />
    LPCSTR lpDefaultChar,	// address of default for unmappable characters  <br />
    LPBOOL lpUsedDefaultChar 	// address of flag set when default char. used <br />
   );<br />
第一个参数使用CP_ACP，第二个参数设为0，第三个参数就是要转换的Unicode字符串的指针，第四个参数，Unicode字符串长度，第五个参数转换到ANSI字符串的指针，第六个参数ANSI字符串的长度<br />
<br />
这样就可以把Unicode转换为ANSI编码了，但是还有一个问题，就是如何判断要读入的文件是Unicode编码的还是ANSI编码的？查了一下资料，发现所有Unicode编码的文本文件，其文件头2个字节一定是"0xff","0xfe"，这样就好办了，只要先读出这两个字节，然后就可以判断是不是Unicode编码的了。<br />
<br />
if( psFirst[0] == ’\xff’ && psFirst[1] == ’\xfe’ )用这条语句就可以判断了。<br />
<br />
下面给出C++的一段文件读取代码，返回的就是AnsiString的字符串，这样就可以读取Unicode编码和非Unicode编码的文件了<br />
AnsiString TForm1::ReadUnicodeFromFile(const AnsiString &FileName)<br />
{<br />
    char psFirst[2];<br />
    AnsiString str;<br />
    int iFileHandle = FileOpen( FileName, fmOpenRead );<br />
    int iFileLength = FileSeek( iFileHandle, 0, 2 );<br />
    FileSeek(iFileHandle, 0, 0);<br />
    FileRead(iFileHandle, psFirst, 2);  //读出文件的头2个字节，用来判断是否为Unicode编码<br />
    if( psFirst[0] == ’\xff’ && psFirst[1] == ’\xfe’ )<br />
    {<br />
       wchar_t *wstr=new wchar_t[iFileLength+1];<br />
       FileRead(iFileHandle, wstr, iFileLength);<br />
       FileClose(iFileHandle);<br />
       int nLen = wcslen(wstr)+1;<br />
       char *buf = new char[2*nLen];<br />
       WideCharToMultiByte(CP_ACP, 0, wstr, nLen, buf, 2*nLen, NULL, NULL);<br />
       str = buf;<br />
       delete[] buf;<br />
    }<br />
    else<br />
    {<br />
       char *pszBuffer = new char[iFileLength+1];<br />
       FileSeek(iFileHandle, 0, 0);<br />
       FileRead(iFileHandle, pszBuffer, iFileLength);<br />
       FileClose(iFileHandle);<br />
       str=pszBuffer;<br />
       delete []pszBuffer;<br />
    }<br />
    return str;<br />
}<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://zhongpu.52blog.net/logs/3031488.html">结晶型高纯硼粉</a> 2008-08-14</div><div><a href="http://jiamingsoft.yourblog.org/logs/428840.html">BCB中管道应用示例</a> 2005-09-03</div><div><a href="http://jiamingsoft.yourblog.org/logs/157999.html">皮肤技术研究</a> 2004-04-24</div><div><a href="http://jiamingsoft.yourblog.org/logs/152294.html">Winamp插件研究[转自CSDN]</a> 2004-04-18</div><div><a href="http://jiamingsoft.yourblog.org/logs/143811.html">LRC格式歌词分解程序</a> 2004-04-11</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F144415.html&title=Unicode%E7%BC%96%E7%A0%81%E6%96%87%E4%BB%B6%E7%9A%84%E8%AF%BB%E5%8F%96">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/144415.html</link>
   <author>佳名猫</author>
   <pubDate>Sun, 11 Apr 2004 09:20:15 +0800</pubDate>
  </item>
  <item>
   <title>歌词串串烧1.15版＝＝发布</title>
   <description><![CDATA[歌词串串烧1.15版更新<br />
下载地址：下载歌词串串烧1.15版<br />
v1.15 Beta 【2004.04.14】<br />
1.重写部分代码，使得速度有大幅度提高<br />
2.修正添加歌手时导致类别无效的错误<br />
3.修正最简模式的上一首和下一首按钮错误<br />
<br />
v1.13 Beta 【2004.04.12】<br />
1.修正修改专辑时导致歌词丢失的错误<br />
2.升级歌词数据库，自带歌词增加到1500首 <br />
<br />
v1.12  Beta  【2004.04.07】<br />
1.支持LRC格式歌词的批量导入<br />
2.支持自定义类别<br />
3.支持收藏夹拖放排序<br />
4.增加歌手拖放分类功能<br />
5.增加上一首和下一首按钮，大大方便操作<br />
6.修正删除歌词时却没有删除收藏夹中相应条目的Bug<br />
7.修正删除专辑时却没有删除收藏夹中相应条目的Bug<br />
<br />
<br />
<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/143811.html">LRC格式歌词分解程序</a> 2004-04-11</div><div><a href="http://jiamingsoft.yourblog.org/logs/137593.html">完成了对Color Wheel的开发</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137588.html">图书助理0.11版＝＝发布</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137587.html">发布＝图书助理＝测试版</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137586.html">C语言写的贪吃蛇</a> 2004-04-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F142289.html&title=%E6%AD%8C%E8%AF%8D%E4%B8%B2%E4%B8%B2%E7%83%A71.15%E7%89%88%EF%BC%9D%EF%BC%9D%E5%8F%91%E5%B8%83">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/142289.html</link>
   <author>佳名猫</author>
   <pubDate>Fri, 09 Apr 2004 11:11:36 +0800</pubDate>
  </item>
  <item>
   <title>完成了对Color Wheel的开发</title>
   <description><![CDATA[终于完成了对ColorWheel的开发，强烈推荐下载，这是我写过最复杂的软件了<br />
软件功能主要是网页配色、屏幕取色以及色彩管理等等<br />
<br />
软件下载地址：下载ColorWheel<br />
<br />
屏幕截图<br />
<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/142289.html">歌词串串烧1.15版＝＝发布</a> 2004-04-09</div><div><a href="http://jiamingsoft.yourblog.org/logs/137588.html">图书助理0.11版＝＝发布</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137587.html">发布＝图书助理＝测试版</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137586.html">C语言写的贪吃蛇</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/135803.html">歌词串串烧</a> 2004-04-03</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F137593.html&title=%E5%AE%8C%E6%88%90%E4%BA%86%E5%AF%B9Color+Wheel%E7%9A%84%E5%BC%80%E5%8F%91">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/137593.html</link>
   <author>佳名猫</author>
   <pubDate>Mon, 05 Apr 2004 08:04:02 +0800</pubDate>
  </item>
  <item>
   <title>图书助理0.11版＝＝发布</title>
   <description><![CDATA[新增功能<br />
1。增加自动提醒功能，在每天开机时，如果有图书已经超期或者将要到期，将会弹出窗口提醒<br />
每天只提醒一次的哦，以后不管是重启还是重新开机，一天之内不会再提醒了<br />
当然，你也可以启动程序查看自己的书籍情况<br />
<br />
2。修正了一些Bug，稍微修改了一些界面元素<br />
下载地址：下载图书助理0.11版<br />
<br />
新功能截图：<br />
<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://jiamingsoft.yourblog.org/logs/142289.html">歌词串串烧1.15版＝＝发布</a> 2004-04-09</div><div><a href="http://jiamingsoft.yourblog.org/logs/137593.html">完成了对Color Wheel的开发</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137587.html">发布＝图书助理＝测试版</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137586.html">C语言写的贪吃蛇</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/135842.html">密码管理器</a> 2004-04-03</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F137588.html&title=%E5%9B%BE%E4%B9%A6%E5%8A%A9%E7%90%860.11%E7%89%88%EF%BC%9D%EF%BC%9D%E5%8F%91%E5%B8%83">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/137588.html</link>
   <author>佳名猫</author>
   <pubDate>Mon, 05 Apr 2004 08:02:02 +0800</pubDate>
  </item>
  <item>
   <title>发布＝图书助理＝测试版</title>
   <description><![CDATA[刚刚完成的测试版，可能还有一定的bug，正在测试中<br />
<br />
界面已经有了很大的变化哦，下载地址：下载图书助理<br />
<br />
截图<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://qqmy.yourblog.org/logs/3032522.html">一个人，挺好！</a> 2008-09-18</div><div><a href="http://jiamingsoft.yourblog.org/logs/142289.html">歌词串串烧1.15版＝＝发布</a> 2004-04-09</div><div><a href="http://jiamingsoft.yourblog.org/logs/137593.html">完成了对Color Wheel的开发</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137588.html">图书助理0.11版＝＝发布</a> 2004-04-05</div><div><a href="http://jiamingsoft.yourblog.org/logs/137586.html">C语言写的贪吃蛇</a> 2004-04-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://del.icio.us/post?v=4&noui&jump=close&url=http%3A%2F%2Fjiamingsoft.yourblog.org%2Flogs%2F137587.html&title=%E5%8F%91%E5%B8%83%EF%BC%9D%E5%9B%BE%E4%B9%A6%E5%8A%A9%E7%90%86%EF%BC%9D%E6%B5%8B%E8%AF%95%E7%89%88">Del.icio.us</a></span></div><br><br><div class="sysmsg"><b><a href="http://www.gov.cn/zwgk/2008-05/18/content_981560.htm">深切哀悼四川汶川大地震遇难同胞</a></b><br><br></div>]]></description>
   <link>http://jiamingsoft.yourblog.org/logs/137587.html</link>
   <author>佳名猫</author>
   <pubDate>Mon, 05 Apr 2004 08:01:11 +0800</pubDate>
  </item>
 </channel>
</rss>
