遍历文件夹一个奇怪的问题. ( 积分: 100 )

  • 主题发起人 主题发起人 maozhuxi
  • 开始时间 开始时间
M

maozhuxi

Unregistered / Unconfirmed
GUEST, unregistred user!
我以前买的一本delphi例子一书,最近试了一个遍历文件夹的例子,发现一个不能理解的问题
1.我电脑有几个盘,有的盘能遍历完,有的不能遍历完,比如我遍历d盘所有的word文件,程序显示有2000个文件,我用windows的搜索程序显示却有2000多个文件,而在e盘就不存在这样的问题,在别人的电脑上也一样.我为了搞清楚是怎么回事找到了哪个遍历不到的文件夹a,点属性没发现那里和其他文件夹不一样的.
2.我用的是xp的系统,假设我有两个用户a,b都是超级用户,假设用a登陆虽然能看到用户b的文件夹,但是遍历无论如何都遍历不到C:/Documents and Settings/b这个文件夹里的文件

谢谢!
 
如果有希望看代码的同志,如下:(我没把代码放在问题,觉得这样利于大家看)
procedure tform1.findFILE(path:string);
var sr:tsearchrec;
systime:tsystemtime;//系统时间
localfiletime:tfiletime;//文件时间
datetime:tdatetime;
begin
//开始查找
if FindFirst(path+'*.*',faanyfile, sr) = 0 then //搜索任意文件
begin
repeat
//如果属性为目录,并且文件名不是系统根目录
if (sr.Attr=fadirectory) and (sr.Name<>'.') and (sr.Name<>'..') then
begin
findFILE(path+sr.Name+'/');//再次搜索目录下的目录
end;
until findnext(sr)<>0 ;//搜索下一个文件夹,操作失败,返回非0
findclose(sr); //关闭释放资源
end;

//遍历目录下的文件
if findfirst(path+edit1.Text,faanyfile,sr)=0 then
begin
repeat

//如果是文件,并符合条件,就在表格中罗列出来
if (sr.Attr<>fadirectory) then
begin
Stringgrid1.RowCount:=count+2; //动态设定stringgrid对象的行数
stringgrid1.Cells[0,count+1]:=path+sr.Name;//文件名
stringgrid1.Cells[1,count+1]:=inttostr(round(sr.Size div 1024))+'KB';//文件大小
stringgrid1.Cells[2,count+1]:=datetostr(FileDateToDateTime(sr.Time));//创建时间
count:=count+1;
end;

until findnext(sr)<>0 ;//继续搜索下一个
findclose(sr);//结束搜索
end;
self.StatusBar1.Panels[0].Text:='共搜索到'+inttostr(count)+'个文件';
end;


procedure TForm1.Button1Click(Sender: TObject);
var
pathname:string;
begin
count:=0;
stringgrid1.RowCount:=2;
self.StatusBar1.Panels[0].Text:='';
pathname:=label5.Caption;//取得搜索路径
if copy(pathname,length(pathname),1)<>'/' then
pathname:=pathname+'/'
else
pathname:=pathname;
findfile(pathname);
end;
 
后退
顶部