<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luin&#039;s Blog &#187; 微软</title>
	<atom:link href="http://luinlee.com/tag/%e5%be%ae%e8%bd%af/feed/" rel="self" type="application/rss+xml" />
	<link>http://luinlee.com</link>
	<description>A long river</description>
	<lastBuildDate>Sat, 07 Aug 2010 04:55:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>来，做个驴坝！用Delphi开发A片扫描器</title>
		<link>http://luinlee.com/396/delphia/</link>
		<comments>http://luinlee.com/396/delphia/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 13:25:00 +0000</pubDate>
		<dc:creator>Luin</dc:creator>
				<category><![CDATA[Borland Delphi]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://luinlee.com/?p=396</guid>
		<description><![CDATA[其实驴坝这个东西是挺好玩的，对被监控有爱的同学可以下来尝试一下。 这里，来讲一个用小创意干大事（俗称小炮打恐龙）的故事。 这个故事的结局是我们可以开发一个能找出电脑中所有A片的程序，这是个集合了影像分析、画面色块分层、人工智能等复杂算法的复杂的玩意。 好吧，其实这个程序只是简单读了下文件头而已(喂喂，那位拿板砖的同学请把板砖放下)。 我们假设一般人会把A片的扩展名改掉(例如改成txt、bmp等格式。曾经的realplayer年代有人会把rmvb格式的A片改成avi格式，现在由于暴风射手之流的出现导致这种方法不灵了)，于是我们只有扫描一下文件的头部数据判断这个文件是不是一个影像文件，然后再判断这个文件的扩展名是不是一个影像文件的扩展名，如果不是自然就很可能是A片了(如果是的话应该就是阿凡达这类的电影了，你总不能说人家是A片吧)。 先送上队列遍历文件的代码(递归算法在这里更容易理解，但实际上很容易超栈溢出): function EnumFileInQueue&#40;path:PChar&#41;:Longint;stdcall; var searchRec:TSearchRec; found:Integer; tmpStr:String; curDir:PChar; dirs:TQueue; begin Result:=0;//查找结果(文件数) dirs:=TQueue.Create;//创建目录队列 dirs.Push&#40;path&#41;;//将起始搜索路径入队 curDir:=dirs.Pop;//出队 while &#40;curDir&#38;lt;&#38;gt; nil&#41; do begin tmpStr:=StrPas&#40;curDir&#41;+'\*.*'; found:=FindFirst&#40;tmpStr,faAnyFile,searchRec&#41;; while found=0 do begin if &#40;searchRec.Attr and faDirectory&#41;&#38;lt;&#38;gt;0 then begin if &#40;searchRec.Name &#38;lt;&#38;gt; '.'&#41; and &#40;searchRec.Name &#38;lt;&#38;gt; '..'&#41; then begin tmpStr:=StrPas&#40;curDir&#41;+'\'+searchRec.Name; dirs.Push&#40;StrNew&#40;PChar&#40;tmpStr&#41;&#41;&#41;; end; end //如果找到的是个文件 else begin Result:=Result+1; //form1.Label2.Caption [...]]]></description>
			<content:encoded><![CDATA[<p>其实驴坝这个东西是挺好玩的，对被监控有爱的同学可以下来尝试一下。</p>
<p>这里，来讲一个用小创意干大事（俗称小炮打恐龙）的故事。</p>
<p>这个故事的结局是我们可以开发一个能找出电脑中所有A片的程序，这是个集合了影像分析、画面色块分层、人工智能等复杂算法的复杂的玩意。</p>
<div id="attachment_399" class="wp-caption alignleft" style="width: 310px"><a class="highslide img_1" href="http://luinlee.com/wp-content/uploads/2010/03/AScan.png" onclick="return hs.expand(this)"><img class="size-medium wp-image-399" title="A片扫描器" src="http://luinlee.com/wp-content/uploads/2010/03/AScan-300x213.png" alt="A片扫描器" width="300" height="213" /></a><p class="wp-caption-text">A片扫描器</p></div>
<p>好吧，其实这个程序只是简单读了下文件头而已(喂喂，那位拿板砖的同学请把板砖放下)。</p>
<p>我们假设一般人会把A片的扩展名改掉(例如改成txt、bmp等格式。曾经的realplayer年代有人会把rmvb格式的A片改成avi格式，现在由于暴风射手之流的出现导致这种方法不灵了)，于是我们只有扫描一下文件的头部数据判断这个文件是不是一个影像文件，然后再判断这个文件的扩展名是不是一个影像文件的扩展名，如果不是自然就很可能是A片了(如果是的话应该就是阿凡达这类的电影了，你总不能说人家是A片吧)。</p>
<p>先送上队列遍历文件的代码(递归算法在这里更容易理解，但实际上很容易超栈溢出):</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> EnumFileInQueue<span style="color: #000066;">&#40;</span>path<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">PChar</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Longint</span><span style="color: #000066;">;</span>stdcall<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span>
    searchRec<span style="color: #000066;">:</span>TSearchRec<span style="color: #000066;">;</span>
    found<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
    tmpStr<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
    curDir<span style="color: #000066;">:</span><span style="color: #000066; font-weight: bold;">PChar</span><span style="color: #000066;">;</span>
    dirs<span style="color: #000066;">:</span>TQueue<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
    Result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//查找结果(文件数)</span>
    dirs<span style="color: #000066;">:</span><span style="color: #000066;">=</span>TQueue<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//创建目录队列</span>
    dirs<span style="color: #000066;">.</span><span style="color: #006600;">Push</span><span style="color: #000066;">&#40;</span>path<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//将起始搜索路径入队</span>
    curDir<span style="color: #000066;">:</span><span style="color: #000066;">=</span>dirs<span style="color: #000066;">.</span><span style="color: #006600;">Pop</span><span style="color: #000066;">;</span><span style="color: #808080; font-style: italic;">//出队</span>
    <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #000066;">&#40;</span>curDir&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #000000; font-weight: bold;">begin</span>
        tmpStr<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\*.*'</span><span style="color: #000066;">;</span>
        found<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">FindFirst</span><span style="color: #000066;">&#40;</span>tmpStr<span style="color: #000066;">,</span>faAnyFile<span style="color: #000066;">,</span>searchRec<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">while</span> found<span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #000000; font-weight: bold;">begin</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Attr</span> <span style="color: #000000; font-weight: bold;">and</span> faDirectory<span style="color: #000066;">&#41;</span>&amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
            <span style="color: #000000; font-weight: bold;">begin</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span> &amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span> <span style="color: #ff0000;">'.'</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">and</span> <span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span> &amp;lt<span style="color: #000066;">;</span>&amp;gt<span style="color: #000066;">;</span> <span style="color: #ff0000;">'..'</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #000000; font-weight: bold;">begin</span>
                    tmpStr<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\'</span><span style="color: #000066;">+</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span><span style="color: #000066;">;</span>
                    dirs<span style="color: #000066;">.</span><span style="color: #006600;">Push</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">StrNew</span><span style="color: #000066;">&#40;</span><span style="color: #000066; font-weight: bold;">PChar</span><span style="color: #000066;">&#40;</span>tmpStr<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
                <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
            <span style="color: #000000; font-weight: bold;">end</span>
            <span style="color: #808080; font-style: italic;">//如果找到的是个文件</span>
            <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">begin</span>
                Result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>Result<span style="color: #000066;">+</span><span style="color: #0000ff;">1</span><span style="color: #000066;">;</span>
                <span style="color: #808080; font-style: italic;">//form1.Label2.Caption  := StrPas(curDir)+'\';</span>
                <span style="color: #808080; font-style: italic;">//form1.Label1.Caption :=(StrPas(curDir)+'\'+searchRec.Name);</span>
                <span style="color: #000000; font-weight: bold;">if</span> isA<span style="color: #000066;">&#40;</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\'</span><span style="color: #000066;">+</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #000000; font-weight: bold;">begin</span>
                  Form1<span style="color: #000066;">.</span><span style="color: #006600;">Memo1</span><span style="color: #000066;">.</span><span style="color: #006600;">Lines</span><span style="color: #000066;">.</span><span style="color: #006600;">Add</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">StrPas</span><span style="color: #000066;">&#40;</span>curDir<span style="color: #000066;">&#41;</span><span style="color: #000066;">+</span><span style="color: #ff0000;">'\'</span><span style="color: #000066;">+</span>searchRec<span style="color: #000066;">.</span><span style="color: #006600;">Name</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
                  <span style="color: #808080; font-style: italic;">//form1.Button2.Click;</span>
                <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
            found<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">FindNext</span><span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> dirs<span style="color: #000066;">.</span><span style="color: #006600;">Count</span> &amp;gt<span style="color: #000066;">;</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
            curDir<span style="color: #000066;">:</span><span style="color: #000066;">=</span>dirs<span style="color: #000066;">.</span><span style="color: #006600;">Pop</span>
        <span style="color: #000000; font-weight: bold;">else</span>
            curDir<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000000; font-weight: bold;">nil</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
    dirs<span style="color: #000066;">.</span><span style="color: #006600;">Free</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">FindClose</span><span style="color: #000066;">&#40;</span>searchRec<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>然后是获得文件头部信息的代码：</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">Function</span> GetFileBegin<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">const</span> Filename<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Var</span>
  i<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">integer</span><span style="color: #000066;">;</span>
  Source<span style="color: #000066;">:</span> tfilestream<span style="color: #000066;">;</span>
  s2<span style="color: #000066;">,</span> s3<span style="color: #000066;">,</span> s<span style="color: #000066;">,</span> s4<span style="color: #000066;">,</span> s5<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">;</span>
  Buf<span style="color: #000066;">:</span> <span style="color: #000000; font-weight: bold;">Array</span><span style="color: #000066;">&#91;</span>0<span style="color: #000066;">..</span><span style="color: #006600;">MaxBuf</span><span style="color: #000066;">-</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#93;</span> <span style="color: #000000; font-weight: bold;">Of</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">Begin</span>
  result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Try</span>
    Source<span style="color: #000066;">:</span><span style="color: #000066;">=</span>tfilestream<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">&#40;</span>Filename<span style="color: #000066;">,</span> fmOpenRead <span style="color: #000000; font-weight: bold;">Or</span> fmShareDenyNone<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">If</span> Source<span style="color: #000066;">.</span><span style="color: #006600;">Size</span>&amp;lt<span style="color: #000066;">;</span><span style="color: #0000ff;">10</span> <span style="color: #000000; font-weight: bold;">Then</span> <span style="color: #000066;">Exit</span><span style="color: #000066;">;</span>
    Source<span style="color: #000066;">.</span><span style="color: #000066;">Seek</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> sofrombeginning<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Try</span>
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">+</span><span style="color: #000066;">IntToHex</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s2<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s2<span style="color: #000066;">+</span><span style="color: #000066;">IntToHex</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">2</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s3<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s3<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s4<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s4<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
      Source<span style="color: #000066;">.</span><span style="color: #000066;">Read</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">,</span> <span style="color: #000066;">SizeOf</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      <span style="color: #000000; font-weight: bold;">For</span> i<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">To</span> MaxBuf<span style="color: #000066;">-</span><span style="color: #0000ff;">1</span> <span style="color: #000000; font-weight: bold;">Do</span>
        s5<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s5<span style="color: #000066;">+</span><span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>Buf<span style="color: #000066;">&#91;</span>i<span style="color: #000066;">&#93;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
      s<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">+</span>s2<span style="color: #000066;">+</span>s3<span style="color: #000066;">+</span>s4<span style="color: #000066;">+</span>s5<span style="color: #000066;">;</span>
      result<span style="color: #000066;">:</span><span style="color: #000066;">=</span>s<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">Finally</span>
      Source<span style="color: #000066;">.</span><span style="color: #006600;">Free</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">Except</span>
    result<span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #ff0000;">''</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">End</span><span style="color: #000066;">;</span></pre></div></div>

<p>当用这个函数检测文件时，返回一个由字母和数字组成的字符串，代表着文件头信息。</p>
<p>接下来是判断是否是A片的函数(isA,嗯，好名字):</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> isA<span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">const</span> FileName<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">String</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">boolean</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span>
  sbegin<span style="color: #000066;">,</span>stmp <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">string</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  Result <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">;</span>
  stmp <span style="color: #000066;">:</span><span style="color: #000066;">=</span><span style="color: #000066;">ExtractFileExt</span><span style="color: #000066;">&#40;</span>FileName<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.rm'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.rmvb'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.mpq'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.avi'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.rm'</span><span style="color: #000066;">&#41;</span><span style="color: #000000; font-weight: bold;">or</span><span style="color: #000066;">&#40;</span>stmp<span style="color: #000066;">=</span><span style="color: #ff0000;">'.mpg'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #000066;">&#40;</span>GetFileSize<span style="color: #000066;">&#40;</span>FileName<span style="color: #000066;">&#41;</span> &amp;lt<span style="color: #000066;">;</span> <span style="color: #0000ff;">10242880</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  sbegin <span style="color: #000066;">:</span><span style="color: #000066;">=</span> GetFileBegin<span style="color: #000066;">&#40;</span>FileName<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">pos</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'52494646'</span><span style="color: #000066;">,</span> sbegin<span style="color: #000066;">&#41;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">or</span>
     <span style="color: #000066;">&#40;</span><span style="color: #000066;">pos</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'2E524D'</span><span style="color: #000066;">,</span> sbegin<span style="color: #000066;">&#41;</span><span style="color: #000066;">=</span><span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span>
  <span style="color: #000066;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">exit</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span></pre></div></div>

<p>GetFileSize是我自己写的函数，可以获得文件大小，如果文件小于10242880字节就跳过检测(小于10MB的A片？)。</p>
<p>52494646和2E524D是rmvb和avi的头部信息，是使用上面的GetFileBegin函数算出来的，可以根据需要自己添加。</p>
<p>好了，一切已经完成。把程序编译出来拷到U盘里给朋友的电脑扫描一下吧(被拍不要找我&#8230;)。真简单，但真不和谐。</p>
<p>爱偷懒的同学<a href="http://luinlee.com/wp-content/uploads/2010/03/AScan.zip">猛击这里下载完整源代码和程序文件AScan</a></p>
<p>前些日子在微软技术部例会上听cxc大牛讲到一个类似的例子：如何找出电影的高潮部分呢？答案：用程序找出电影音量最大的部分就行了。——很简单，当然这个比较和谐。</p>
]]></content:encoded>
			<wfw:commentRss>http://luinlee.com/396/delphia/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>这几天的生活</title>
		<link>http://luinlee.com/226/thesedays/</link>
		<comments>http://luinlee.com/226/thesedays/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 13:33:59 +0000</pubDate>
		<dc:creator>Luin</dc:creator>
				<category><![CDATA[学习&技术]]></category>
		<category><![CDATA[微软俱乐部(MSTC)]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[闲言碎语]]></category>
		<category><![CDATA[mstc]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://luinlee.com/?p=226</guid>
		<description><![CDATA[最近一直很忙，不过现在突然轻松了些，也许是因为明天可爱的工程实习结课的缘故吧~ 鸟巢依旧好玩，不过上次是和爸妈去的，想想快回家了。 工程实习~还是挺好玩的&#8230; &#8220;朝花夕拾&#8221;活动，懒得拍照了&#8230; 小黄和小白~~~其它宿舍寄养的，被弄到自己宿舍啦]]></description>
			<content:encoded><![CDATA[<p>最近一直很忙，不过现在突然轻松了些，也许是因为明天可爱的工程实习结课的缘故吧~<br />
<div id="attachment_227" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_2" href="http://luinlee.com/wp-content/uploads/2009/12/20091205159.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091205159-300x225.jpg" alt="他们在摆pose" title="他们在摆pose" width="300" height="225" class="alignnone size-medium wp-image-227" /></a><p class="wp-caption-text">他们在摆pose</p></div><br />
鸟巢依旧好玩，不过上次是和爸妈去的，想想快回家了。<br />
<div id="attachment_228" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_3" href="http://luinlee.com/wp-content/uploads/2009/12/20091208170.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091208170-300x225.jpg" alt="灯" title="灯" width="300" height="225" class="alignnone size-medium wp-image-228" /></a><p class="wp-caption-text">灯</p></div><br />
<span id="more-226"></span><br />
<div id="attachment_225" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_4" href="http://luinlee.com/wp-content/uploads/2009/12/20091208168.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091208168-300x225.jpg" alt="没拍到..." title="没拍到..." width="300" height="225" class="alignnone size-medium wp-image-229" /></a><p class="wp-caption-text">没拍到...</p></div><br />
工程实习~还是挺好玩的&#8230;<br />
<div id="attachment_230" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_5" href="http://luinlee.com/wp-content/uploads/2009/12/20091210172.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091210172-300x225.jpg" alt="被我拆了的自行车" title="被我拆了的自行车" width="300" height="225" class="alignnone size-medium wp-image-230" /></a><p class="wp-caption-text">被我拆了的自行车</p></div><br />
<div id="attachment_231" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_6" href="http://luinlee.com/wp-content/uploads/2009/12/20091210184.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091210184-300x225.jpg" alt="插了好几个小时，能不纠结点吗" title="插了好几个小时，能不纠结点吗" width="300" height="225" class="alignnone size-medium wp-image-231" /></a><p class="wp-caption-text">插了好几个小时，能不纠结点吗</p></div><br />
<div id="attachment_232" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_7" href="http://luinlee.com/wp-content/uploads/2009/12/20091210185.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091210185-300x225.jpg" alt="没气啦" title="没气啦" width="300" height="225" class="alignnone size-medium wp-image-232" /></a><p class="wp-caption-text">没气啦</p></div><br />
&#8220;朝花夕拾&#8221;活动，懒得拍照了&#8230;<br />
<div id="attachment_233" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_8" href="http://luinlee.com/wp-content/uploads/2009/12/20091210188.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091210188-300x225.jpg" alt="大学第一个证书" title="大学第一个证书" width="300" height="225" class="alignnone size-medium wp-image-233" /></a><p class="wp-caption-text">大学第一个证书</p></div><br />
小黄和小白~~~其它宿舍寄养的，被弄到自己宿舍啦<br />
<div id="attachment_234" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_9" href="http://luinlee.com/wp-content/uploads/2009/12/20091215199.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091215199-300x225.jpg" alt="小黄" title="小黄" width="300" height="225" class="alignnone size-medium wp-image-234" /></a><p class="wp-caption-text">小黄</p></div><br />
<div id="attachment_235" class="wp-caption alignnone" style="width: 310px"><br />
<a class="highslide img_10" href="http://luinlee.com/wp-content/uploads/2009/12/20091215200.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/12/20091215200-300x225.jpg" alt="好可爱的小白" title="好可爱的小白" width="300" height="225" class="alignnone size-medium wp-image-235" /></a><p class="wp-caption-text">好可爱的小白</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://luinlee.com/226/thesedays/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>生活在徜徉&#8230;徜徉？</title>
		<link>http://luinlee.com/34/life-f/</link>
		<comments>http://luinlee.com/34/life-f/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 14:56:00 +0000</pubDate>
		<dc:creator>Luin</dc:creator>
				<category><![CDATA[闲言碎语]]></category>
		<category><![CDATA[天津]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://luinlee.com/?p=34</guid>
		<description><![CDATA[徜徉什么&#8230; 加入了院学生会宣传部。不知道忙不忙，怎样忙，院学生会转系-&#62;退出&#8230; 然后一直在晨训。就是简单的稍息立正跨步齐步走什么的，挺没意思。 其它的就是计算机导论课的作业。目前准备弄个多点触控，正在设计中~ 10.1快到了，9月30日晚上我就会回到天津啦。 @MS]]></description>
			<content:encoded><![CDATA[<p>徜徉什么&#8230;</p>
<p>加入了院学生会宣传部。不知道忙不忙，怎样忙，院学生会转系-&gt;退出&#8230;</p>
<p>然后一直在晨训。就是简单的稍息立正跨步齐步走什么的，挺没意思。</p>
<p>其它的就是计算机导论课的作业。目前准备弄个多点触控，正在设计中~</p>
<p>10.1快到了，9月30日晚上我就会回到天津啦。<br />
<span id="more-34"></span></p>
<p>@MS<br />
<div id="attachment_41" class="wp-caption alignnone" style="width: 310px"><a class="highslide img_11" href="http://luinlee.com/wp-content/uploads/2009/09/ms.jpg" onclick="return hs.expand(this)"><img src="http://luinlee.com/wp-content/uploads/2009/09/ms-300x200.jpg" alt="微软亚洲研究院" title="ms" width="300" height="200" class="size-medium wp-image-41" /></a><p class="wp-caption-text">微软亚洲研究院</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://luinlee.com/34/life-f/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
