当我们在资源管理器中选中一个文件夹时,在状态栏中会出现这个文件夹中有多少个对象(文件),在程序中怎样取得。 (100分)

  • 主题发起人 主题发起人 乖乖兔
  • 开始时间 开始时间

乖乖兔

Unregistered / Unconfirmed
GUEST, unregistred user!
当我们在资源管理器中选中一个文件夹时,<br>在状态栏中会出现这个文件夹中有多少个对象(文件),<br>在我们自己程序中怎样取得这个数字,用什么函数。
 
不知道有没有现成的函数,但可以自己编程递归搜索。<br>下面的例子稍加改动就棵实现你想要的功能。<br>function GetDirectorySize(Path: String): Integer; //eg. Path = 'c:/temp/'<br>var<br>&nbsp; SR: TSearchRec;<br>begin<br>&nbsp; Result := 0;<br>&nbsp; if path[length(path)]&lt;&gt;'/' then path:=path+'/';<br>&nbsp; if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; if (sr.Name &lt;&gt; '.') and (sr.Name &lt;&gt; '..') and (sr.Attr = faDirectory) then<br>&nbsp; &nbsp; &nbsp; Result := Result + GetDirectorySize(Path+Sr.Name+'/')<br>&nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; Result := Result + Sr.Size;<br>&nbsp; &nbsp; while FindNext(sr) = 0 do<br>&nbsp; &nbsp; &nbsp; if (sr.Name &lt;&gt; '.') and (sr.Name &lt;&gt; '..') and (sr.Attr = faDirectory) then<br>&nbsp; &nbsp; &nbsp; &nbsp; Result := Result + GetdirectorySize(Path+Sr.Name+'/')<br>&nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; Result := Result + Sr.Size;<br>&nbsp; &nbsp; FindClose(sr);<br>&nbsp; end;<br>end;
 
这个递归过程我自己早就写好了,<br>因为这么个过程要耗一定的时间,这不是我想要的。<br>我就是要知道这么一个函数,我想Windows因该会有这么一个函数的。<br>谢谢!
 
好象没有,要么你读fat表项,比上面的还快。
 
能告诉我怎样 访问 FAT 表吗?
 
根据fat表结构,读入相应表项,再统计。<br>具体在网上搜
 
没有现成的函数
 

Similar threads

D
回复
0
查看
956
DelphiTeacher的专栏
D
D
回复
0
查看
892
DelphiTeacher的专栏
D
D
回复
0
查看
971
DelphiTeacher的专栏
D
D
回复
0
查看
797
DelphiTeacher的专栏
D
后退
顶部