使用TTreeview控件遍历磁盘目录的问题!求救! ( 积分: 100 )

  • 主题发起人 主题发起人 57605993
  • 开始时间 开始时间
5

57605993

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。
代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;

type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
procedure ri(path:string;node:ttreenode);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
snode:Ttreenode;
implementation

{$R *.dfm}
procedure tform1.ri(path:string;node:ttreenode);
var
sr:Tsearchrec;
tnode:ttreenode;
begin


if findfirst(path+'/*.*',faanyfile,sr)=0 then
begin
repeat
if ((sr.Attr and fadirectory)=fadirectory)and(sr.Name[1]<>'.') then
begin
node:=treeview1.Items.AddChild(node,sr.Name);
Tnode:=node.Parent;
ri(path+sr.Name,node);
node:=tnode;
end;
until findnext(sr)<>0;

end;

end;




procedure TForm1.Button1Click(Sender: TObject);
begin
snode:=treeview1.Items.Add(snode,'D:/');
ri('d:/',snode);
end;

end.


[red]这个程序我只遍历了文件夹,因为就这里出现问题
它只遍历到D盘下第一层子文件夹,第二层子文件夹可以看到,但文件名前面没有小加号,
就是说之后第三层第四层和之后的文件夹就没有遍历到,我确定我D盘里面文件夹不少于10层的。
不知道到底哪里出现了问题。
望高手提点!
[/red]
 
你望了考虑两个文件了
一个当前目录 “.“
一个是上级目录 “..”
如果遇到这两个目录文件应该忽略,不然进入死循环
或者没有遍历完很快退出
 
没必要一次性把磁盘下的所有目录及子目录都加载到树中吧,
每次只加载同级的目录及文件,当展开目录时再加载其下面的子目录及文件,
我之前是这么写的,效率也可以
 
谢谢两位。
一个解决我一直的疑问。
一个解决困扰我的问题。
 
后退
顶部