现有这样的目录结构:
a
  a1
    a11
    a12
    a13
  a2
  a3
b
  b1
  b2
因程序需要,要求定义变量来表示目录结构如:目录  变量名
    a    (root0)
    b    (root1)
    a1   (root00)
    a2   (root01)请问如何实现 ???

解决方案 »

  1.   

    Private Type DIRSTR
      parent As Integer
      name As String
    End TypeDim dirs(10) As DIRSTR    '根目录
        dirs(0).name = "root"
        dirs(0).parent = -1
        
        '目录a
        dirs(1).name = "a"
        dirs(1).parent = 0  '其上级目录为dirs(0),即根目录
        
        '目录b
        dirs(2).name = "b"
        dirs(2).parent = 0  '其上级目录为dirs(0),即根目录    '目录a1
        dirs(3).name = "a1"
        dirs(3).parent = 1  '其上级目录为dirs(1),即目录a    ……
      

  2.   

    或者这样:
    Private Type DIRSTR
        name As String
        next As Integer   '下一个同级兄弟目录
        child As Integer  '第一个子目录
    End TypeDim dirs(10) As DIRSTR    '目录a
        dirs(0).name = "a"
        dirs(0).next = 1    '其兄弟目录为dirs(1),即目录b
        dirs(0).child = 2   '其第一个子目录为dirs(2),即目录a1
        
        '目录b
        dirs(1).name = "b"
        dirs(1).next = -1   '没有兄弟目录
        dirs(1).child = x   '其第一个子目录为dirs(x),即目录b1    '目录a1
        dirs(2).name = "a1"
        dirs(2).next = y    '其兄弟目录为dirs(y),即目录a2
        dirs(2).child = z   '其第一个子目录为dirs(z),即目录b11    ……其中x,y,z还未知,要看你后面怎么排列。
      

  3.   

    我使用递归函数就是为了让程序自己去列出所的的子结点:
    Dim fso As New FileSystemObject
    Dim p As String
    Dim j As Integer
    Dim f As Folder
    Dim flag As BooleanPrivate Sub Command1_Click()
        path = "d:\"
        Call aa(path, p)
    End SubPublic Function aa(ByVal path As String, ByVal p As String)
        Set f = fso.GetFolder(path)
        j = 0
        For Each subf In f.SubFolders
            p = p & j
            MsgBox p
            Call aa(path & "/" & subf.Name, p)
            p = Left(p, Len(p) - 1)
            j = j + 1
        Next
    End FunctionPrivate Sub Form_Load()
        p = "r"
        j = 0
    End Sub现在的问题是我的名在不第一次列举完就不对了????!!!!
      

  4.   

    将变量 J 定义在函数 aa 中
      

  5.   

    Dim fso
    Dim p As String
    Dim j As Integer
    Dim f
    Dim flag As BooleanPrivate Sub Command1_Click()
        path = "d:\"
        Call aa(path, p)
    End SubPublic Function aa(ByVal path As String, ByVal p As String)
        Set f = fso.GetFolder(path)
        j = 0
        For Each subf In f.SubFolders
            p = p & j
            MsgBox p
            Call aa(path & "/" & subf.Name, p)
            p = Left(p, Len(p) - 1)
            j = j + 1
        Next
    End FunctionPrivate Sub Form_Load()
    Set fso = CreateObject("Scripting.FileSystemObject")
        p = "r"
        j = 0
    End Sub
      

  6.   

    freedomjim(老鬼来了) 
    路径拆出来做变量名是没有什么大问题,不过如果路径是有特殊符号,怎么办???
      

  7.   

    楼上的,我测试后不能解决我的问题
    请go on