CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  非技术区

帮我看一段程序,统计一个目录的大小 ,不知问题在哪里,得到的结果不对,顶者有分!!!!!!!!!!!

楼主syl66666(苏)2006-03-04 11:22:51 在 Delphi / 非技术区 提问

function   tform1.countd(cPath:string):longint;  
    var  
      sr:tsearchrec;  
      at:integer;  
   
  begin  
    at:=sysutils.faReadOnly+sysutils.faHidden+faSysFile+faVolumeID+faDirectory+faArchive+faAnyFile;  
      //result:=0;  
      if   findfirst(cpath,at,sr)=0   then  
          begin  
              repeat  
                  if   sr.name='.'   then  
                        continue;  
                  if   (sr.Attr   and   fadirectory)   =   fadirectory   then  
                          countd(sr.Name)  
                  else  
                      result:=sr.Size;  
              until   FindNext(sr)   <>   0;  
                FindClose(sr);  
        end;  
    end;    
       
  帮我看一段程序,统计一个目录的大小   ,不知问题在哪里,得到的结果不对,顶者有分!!!!!!!!!!! 问题点数:20、回复次数:8Top

1 楼syl66666(苏)回复于 2006-03-04 11:23:25 得分 0

帮忙解决哦Top

2 楼syl66666(苏)回复于 2006-03-05 20:50:08 得分 0

顶Top

3 楼cjianwen(空前)回复于 2006-03-05 20:59:39 得分 5

好晕,result:=sr.Size   这个是目录大小?  
   
  这个结构体变量的大小~初始化的时候设置~Top

4 楼syl66666(苏)回复于 2006-03-05 21:03:20 得分 0

这个程序递归?????????Top

5 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-05 21:06:50 得分 15

countd(sr.Name)   //这个是函数,不是过程  
  result:=sr.Size;//这样就没有累加的过程了  
   
  直接给段程序给你吧:  
  function   GetDirectorySize(Path:   String):   Integer;   //eg.   Path   =   'c:\temp\'  
  var  
      SR:   TSearchRec;  
  begin  
      Result   :=   0;  
      if   FindFirst(Path   +   '*.*',   faAnyFile,   SR)   =   0   then  
      begin  
          if   (sr.Name   <>   '.')   and   (sr.Name   <>   '..')   and   (sr.Attr   =   faDirectory)   then  
              Result   :=   Result   +   GetDirectorySize(Path+Sr.Name+'\')  
          else  
              Result   :=   Result   +   Sr.Size;  
          while   FindNext(sr)   =   0   do  
              if   (sr.Name   <>   '.')   and   (sr.Name   <>   '..')   and   (sr.Attr   =   faDirectory)   then  
                  Result   :=   Result   +   GetdirectorySize(Path+Sr.Name+'\')  
              else  
                  Result   :=   Result   +   Sr.Size;  
          FindClose(sr);  
      end;  
  end;  
   
  Top

6 楼syl66666(苏)回复于 2006-03-05 21:10:49 得分 0

cjianwen(空前)   (   )   信誉:100     2006-03-05   20:59:00     得分:   0      
     
     
        好晕,result:=sr.Size   这个是目录大小?  
   
  这个结构体变量的大小~初始化的时候设置~  
   
   
   
  sr.size是文件的大小  
   
   
       
     
  Top

7 楼syl66666(苏)回复于 2006-03-05 21:15:50 得分 0

不行,递归有问题Top

8 楼syl66666(苏)回复于 2006-03-05 21:35:05 得分 0

返回值上Top

相关问题

  • 目录大小
  • 谁能写出一个VBA程序,统计出当前目录中若干个word文件的总页数?
  • 怎么能够快速统计一个复杂目录下所有文件的大小?
  • 一个子目录下有许多文件,如何快速统计出该子目录的尺寸(即占磁盘空间大小)!
  • 怎样统计我的程序运行的时间以及占用内存大小???!!!!!!???????????
  • 统计日志的大小
  • Delphi程序的大小?
  • 得到程序所在的目录
  • 怎样获得应用程序目录?
  • 如何得到程序的目录?

关键词

  • sr
  • fadirectory
  • countd
  • getdirectorysize
  • 大小
  • 目录
  • 程序
  • result
  • attr
  • 问题

得分解答快速导航

  • 帖主:syl66666
  • cjianwen
  • cuteant

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo