| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:请教怎么搜寻目录?
只看楼主 加入收藏
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:3 
请教怎么搜寻目录?
我想达到这样的目的:
指定目录,点击按钮,这个目录下所有大于6个字符的目录名分别显示在label1——label10中,并在label11中显示个数。

例如 c:\aabbcc\1234\ 目录下有如下目录:aabbcc1、baabbcc2、baabbcc3、baabbcc4、baabbcc5、baabbcc6、baabbcc7、baabbcc8。
    指定c:\aabbcc\1234\ 后,点击按钮,label1——label8中分别显示aabbcc1——baabbcc8,最后两个(label9、label10)中显示为空,label11中显示8.

请教这个程序怎么写,求解。
2017-01-19 15:00
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:20 
程序代码:
    Dir1.Path = "c:\aabbcc\1234\"   ' Dir1 是 DirListBox 控件,在界面可以设置 Dir1.Visible = False
    Dim TT() As String, KK As Integer, SS As Integer, MM As String, XX As Integer
    SS = Dir1.ListCount
    ReDim TT(0 To SS)
    For I = 0 To SS - 1
    TT(I) = Dir1.List(I)
    Next I
    For I = 0 To SS - 1
    KK = Len(TT(I))
    MM = Right(TT(I), KK - 15)   '15是 "c:\aabbcc\1234\" 字符串的长度,也可以用  Len("c:\aabbcc\1234\") 代替
    If Len(MM) > 6 Then
    XX = XX + 1
    Label1(XX).Caption = MM      'Label1(XX) 最好动态放置,这里不需要再给你代码了吧
    End If
    Next I
    Label2.Caption = XX   '这里显示检测出“所有大于6个字符的目录”的个数

我在测试 "C:\Windows\" 目录没有问题可以检测出66个目录。

[此贴子已经被作者于2017-1-20 08:22编辑过]


请不要选我!!!
2017-01-19 19:43
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
谢谢版主的帮助。
我想了一下,我提出的问题有瑕疵,未能想周全。应该考虑到再下一层或几层子目录的问题。这就涉及了历遍所有子目录的问题。经过再查找资料,重写程序如下:
Public Sub HaalDirOp(ByVal Path$)
Dim vDirName As String, LastDir As String, i As Integer
i = -1
Screen.MousePointer = vbHourglass
If Right(Path$, 1) <> "\" Then Path$ = Path$ & "\"
vDirName = Dir(Path, vbDirectory) ' Retrieve the first entry.
Do While Not vDirName = ""
If vDirName <> "." And vDirName <> ".." Then
If (GetAttr(Path & vDirName) And vbDirectory) = vbDirectory Then
LastDir = vDirName
'MsgBox vDirName
List1.AddItem Path$ & vDirName
If Len(vDirName) > 6 Then
i = i + 1
Label1(i).Caption = vDirName
End If
Call HaalDirOp(Path$ & vDirName)
vDirName = Dir(Path$, vbDirectory)
Do Until vDirName = LastDir Or vDirName = ""
vDirName = Dir
Loop
If vDirName = "" Then Exit Do
End If
End If
vDirName = Dir
Loop
Screen.MousePointer = vbNormal
End Sub

Private Sub Command1_Click()
HaalDirOp "c:\aabbcc\1234\"
End Sub

这段程序解决了历遍N层子目录,挑选出满足条件的目录名在label中显示。完全达到我的要求。

在这里再次感谢版主的帮助!
2017-01-20 16:04
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
继续请教版主大人:
上面的程序在运行后,现在发现了一个问题:
假设目录结构如下:
E:---111---11---111111111
         |    |-222222222
         |    |-333333333
         |-22---444444444
         |-33---555555555
初始目录设定为E:\111\,逐语句运行后发现:在label1中显示111111111、label2中显示222222222、label3中显示333333333后,照理想方式是444444444出现在label4中,555555555出现在label5中,但实际情况是444444444又出现在label1中,将111111111给覆盖掉,然后555555555出现在label1中将444444444覆盖掉。

简单地说,目前显示的情况是:
label1:555555555
label2:222222222
label3:333333333
label4:空
label5:空

请教如何显示成这样:
label1:111111111
label2:222222222
label3:333333333
label4:444444444
label5:555555555
2017-01-23 13:52
快速回复:请教怎么搜寻目录?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023471 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved