Tree的使用 浏览目录。然后该目录所以文件夹子文件夹树形表示
vb吧
全部回复
仅看楼主
吧务
level 13
VBzhuyongxing 楼主
有没有好点的算法。
2017年12月11日 10点12分 1
level 15
应该是没有。
2017年12月11日 20点12分 2
level 12
典型的递归函数,没有返回值的递归
伪代码如下
'c1是文件夹层数,方便用树型控件添加目录能知道层次
dim c1 as interger
c1 =0
showFile(文件夹入口,c1)
'===递归函数===
public sub showFile(pathName as String,byref c1 as intrger)
dim c as integer
'c用于记录某次递归中的层数
c=c1
,判断pathName是路径还是文件
if 是文件 then
添加到树 c,pathName 对应图标改成文件
else 是文件夹 then
添加到树 c,pathName 对应的图标改成文件夹
c1=c1+1
遍历文件夹下的所有目录和文件
循环开始
showFile(遍历的目录或者文件,c1)
循环结束
end if
end sub
2017年12月12日 01点12分 5
只遍历文件夹就行。但是这个循环好像不行。因为 程序变量是 1 1\11 2 2\22这样的顺序来的。而不是 1 2 1\11 2\22这样的顺序。这样的C1对不对应了。遍历到2 应该和1是同一个级别,按这样的循环 2 就和1\11 一个级别了添加树
2017年12月12日 01点12分
吧务
level 13
VBzhuyongxing 楼主
你试了吗,得有关键字地柜是一个到底然后才是同级别
2017年12月12日 01点12分 6
c和c1用于遍历层次,也就是你说的级别。同一个文件夹下的文件和文件夹的层次相同
2017年12月12日 01点12分
level 12
遍历文件夹所有的文件和判断是不是文件夹百度就有。
主要就是递归,是文件就添加,是文件夹不仅仅添加,还需要遍历,对遍历出来的所有路径再做相同的检测也就是递归
难点就是树型控件添加节点的层次标记
用了c1 和 c
相当于c1是全局变量,函数中是按地址传递的
c是局部变量,当函数出栈,c会保留调用它那次的,层次。
我手机写的没有调试,可能有问题,但是大致思路是这样
2017年12月12日 01点12分 7
吧务
level 13
VBzhuyongxing 楼主
我是用这样方法搞的不知道,首先将 所以路径记录下来 和层次数,都全部出来后,因为层数都是从少到多的。如1 1\11 1\11\111 1\11\112 1,2,3,3 我添加树的时候比如现在层是3。那我就往上找到 层次是的2 的也就是1\11 然后退出循环 进行 子层的添加
2017年12月12日 01点12分 8
你这种思路可以,只是循环只能遍历出2层,而文件层数是不知道的,需要用递归,就能遍历所有
2017年12月12日 01点12分
level 12
递归函数有点绕,把层次弄清楚就可以。让程序知道调用它的是哪一层。节点名字规范一点,知道了层次就知道父节点的名字,就能添加到这个父节点下
2017年12月12日 01点12分 9
遍历顺序的不同。得储存往回找。我利用的是 所以的结果不。也就能2个循环后
2017年12月12日 01点12分
@VBzhuyongxing 从递归下手,不要想的太复杂,某次递归找到函数出口后就会出栈,就会返回上一次调用它的那次递归过程中,而函数局部变量互不相干,返回后会继续那一次的局部变量(某一次的层次),可能就是你说的往回找
2017年12月12日 01点12分
@assial 树形不好添加。因为它不是2层找完找3层。 1个文件夹 找到最后。再返回来找。全局变量。他会一直增加。 往回找的时候。 本来是2层但是 c1已经增加成好多层了。这样不对。
2017年12月12日 01点12分
@VBzhuyongxing 是的,递归那一步有点晕,不能用全局,只能局部
2017年12月12日 01点12分
level 12
还有,就是这个思路是不会错的,我用java写过遍历文件夹就是这种思路,控制台下的文件夹树型结构,一样的,只是你添加了树型控件,无非就是层次的另一种体现方式。
2017年12月12日 01点12分 10
level 12
典型的递归函数,没有返回值的递归
伪代码如下
'c1是文件夹层数,方便用树型控件添加目录能知道层次
dim c1 as interger
c1 =0
showFile(文件夹入口,c1)
'===递归函数===
public sub showFile(pathName as String, c as intrger)
dim c as integer
,判断pathName是路径还是文件
if 是文件 then
添加到树 c,pathName 对应图标改成文件
else 是文件夹 then
添加到树 c,pathName 对应的图标改成文件夹
c=c+1
遍历文件夹下的所有目录和文件
循环开始
showFile(遍历的目录或者文件,c)
循环结束
end if
end sub
2017年12月12日 02点12分 11
1