G
guoxp
Unregistered / Unconfirmed
GUEST, unregistred user!
我自己写了一个想列示出一个文件夹下的所有目录以及其子目录的过程,想把这些目录与它下面的子目录能类似windows浏览器
那样层层对应出来(我不想用Delphi 6的那个控件),这里我用了递归调用,我知道在这里出错了,但是不知道该怎么改,请大家
看看这些代码:
procedure tform1.searchDir(path,my_treenode: string);{path中要有'/' }
var
sr: tsearchRec;
found,i: integer;
mynode_1: Ttreenode;
my_subdir: Tstrings;
treenode,tempnode: array of Ttreenode;
begin
mynode_1:=Treeview1.items.add(treeview1.topitem,my_treenode);//treeview控件里的顶层,这里可能是
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;出错的原因之一
my_subdir:=Tstringlist.Create;
//这里的处理到第一个 while循环是为了提取当前目录的所有下级目录
found:=findfirst(path+'*.*',faDirectory,sr);
if found=0 then
begin
; if (sr.Attr=faDirectory) and (sr.Name<>'..') and (sr.name<>'.') then
; ;my_subdir.Add(sr.Name);
; while (findnext(sr)=0) do
; begin
; ;if (sr.Attr=faDirectory) and (sr.Name<>'..') and (sr.name<>'.') then
; ; my_subdir.Add(sr.Name);
; end;
end;
//用循环把目录、子目录一一对应的写到treeview里去
setlength(treenode,my_subdir.Count);
setlength(tempnode,my_subdir.Count);
; for i:=0 to my_subdir.Count-1 do
; begin
; ; treenode:=treeview1.items.addchild(mynode_1,my_subDir.Strings);
错误可能出在上句中的addchild中的mynode_1,这样我就不能正确的显示我想要的结果了,我想过替代,但是
不知道该怎么做
; ; //mynode_1:=treenode;
; ; //treenode:=treeview1.items.addchild(treenode,my_subDir.Strings);
; ; //searchDir(path+my_subdir.Strings+'/',my_subdir.strings);这里是想递归了,然而却难以避免
上面的错误,我想在这里能把这次递归的结果显示到相应的treenode下层,请高手指点一下
; end;
findclose(sr);
my_subdir.Free;
end;
那样层层对应出来(我不想用Delphi 6的那个控件),这里我用了递归调用,我知道在这里出错了,但是不知道该怎么改,请大家
看看这些代码:
procedure tform1.searchDir(path,my_treenode: string);{path中要有'/' }
var
sr: tsearchRec;
found,i: integer;
mynode_1: Ttreenode;
my_subdir: Tstrings;
treenode,tempnode: array of Ttreenode;
begin
mynode_1:=Treeview1.items.add(treeview1.topitem,my_treenode);//treeview控件里的顶层,这里可能是
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;出错的原因之一
my_subdir:=Tstringlist.Create;
//这里的处理到第一个 while循环是为了提取当前目录的所有下级目录
found:=findfirst(path+'*.*',faDirectory,sr);
if found=0 then
begin
; if (sr.Attr=faDirectory) and (sr.Name<>'..') and (sr.name<>'.') then
; ;my_subdir.Add(sr.Name);
; while (findnext(sr)=0) do
; begin
; ;if (sr.Attr=faDirectory) and (sr.Name<>'..') and (sr.name<>'.') then
; ; my_subdir.Add(sr.Name);
; end;
end;
//用循环把目录、子目录一一对应的写到treeview里去
setlength(treenode,my_subdir.Count);
setlength(tempnode,my_subdir.Count);
; for i:=0 to my_subdir.Count-1 do
; begin
; ; treenode:=treeview1.items.addchild(mynode_1,my_subDir.Strings);
错误可能出在上句中的addchild中的mynode_1,这样我就不能正确的显示我想要的结果了,我想过替代,但是
不知道该怎么做
; ; //mynode_1:=treenode;
; ; //treenode:=treeview1.items.addchild(treenode,my_subDir.Strings);
; ; //searchDir(path+my_subdir.Strings+'/',my_subdir.strings);这里是想递归了,然而却难以避免
上面的错误,我想在这里能把这次递归的结果显示到相应的treenode下层,请高手指点一下
; end;
findclose(sr);
my_subdir.Free;
end;