(adsbygoogle = window.adsbygoogle || []).push({}); O_o :: 'Files' 태그의 글 목록

'Files'에 해당되는 글 1건

  1. 2008.10.23 [VB6] 디렉토리 내용 탐색

[VB6] 디렉토리 내용 탐색

|

Recursively search all files in directory structure

'Get all the matching files in the directory structure.


This tip is useful for VB 3.0, 4.0 and 5.0 - 16 bit and 32 bit
There were some tips published for similar type of function before but
this one does better job, as it does not have any limitation. Moreover,
since this code does not use any API it could be easily ported between
16 - 32 bit applications.

Following procedure DirWalk will let you search the entire directory
structure starting at wherever you specify in the argument.


How to use
============
The procedure  should be called as follows

ReDim sArray(0) As String
Call DirWalk("OLE*.DLL", "C:\", sArray)

The procedure would accept the wild card in the first argument which is
search pattern for the file name. The second argument is the location
where to start. Third argument is an array of strings.

The procedure will recursively go to the deepest level in the directory
structure and get all the matching file names with full path in the array
sArray. This array is ReDimed from the function and will have as many
members as matches found.

To use DirWalk you will have to put two extra controls, FileListBox and
DirListBox, on the form. Following procedure is assumed to be on a form
on which there are two controls, FileListBox with name File1 and
DirListBox with name Dir1. Keep them invisible to improve the speed of
search. Putting these additional controls on a form does not cause any
overhead as they are part of basic libray of controls for VB.

Code
====

Sub DirWalk(ByVal sPattern As String, ByVal CurrDir As String, sFound()
As String)
Dim i As Integer
Dim sCurrPath As String
Dim sFile As String
Dim ii As Integer
Dim iFiles As Integer
Dim iLen As Integer

If Right$(CurrDir, 1) <> "\" Then
    Dir1.Path = CurrDir & "\"
Else
    Dir1.Path = CurrDir
End If
For i = 0 To Dir1.ListCount
    If Dir1.List(i) <> "" Then
        DoEvents
        Call DirWalk(sPattern, Dir1.List(i), sFound)
    Else
        If Right$(Dir1.Path, 1) = "\" Then
            sCurrPath = Left(Dir1.Path, Len(Dir1.Path) - 1)
        Else
            sCurrPath = Dir1.Path
        End If
        File1.Path = sCurrPath
        File1.Pattern = sPattern
        If File1.ListCount > 0 Then 'matching files found in the
directory
            For ii = 0 To File1.ListCount - 1
                ReDim Preserve sFound(UBound(sFound) + 1)
                sFound(UBound(sFound) - 1) = sCurrPath & "\" &
File1.List(ii)
            Next ii
        End If
        iLen = Len(Dir1.Path)
        Do While Mid(Dir1.Path, iLen, 1) <> "\"
            iLen = iLen - 1
        Loop
        Dir1.Path = Mid(Dir1.Path, 1, iLen)
    End If
Next i
End Sub

And
prev | 1 | next