|
Top / プログラミングテクニック / 16.再帰的プログラミング(その3)
再帰的プログラミング(その2)で、せっかく良い方法を教わったので、フォルダ名をリストボックスに積み上げる関数を、FileSystemObject を使って作ってみたいと思います。 FileSystemObject について Windows Scripting Host の機能のうちのひとつです。 Microsoft の Web ページよりダウンロードできます。 VB6.0 には、標準でついているようです。 「プロジェクト」→「参照設定」で、ダイアログを開いて、Microsoft Scripting Runtime をチェックしてから実行してください。 Public Sub EnumFolder(lstFolders As ListBox, strFolder As String) Static lngCount As Long ' 再帰呼び出しされた回数をカウントする変数 Static objFs As Scripting.FileSystemObject ' FileSystemObject Dim objFolder As Scripting.Folder ' 親フォルダ Dim objSubFolder As Scripting.Folder ' 子フォルダ ' 最初に呼び出されたときのみ、リストボックスをクリアし ' FileSystemObject を作成します。 If lngCount = 0 Then lstFolders.Visible = False lstFolders.Clear Set objFs = New Scripting.FileSystemObject End If ' 与えられたフォルダ名をリストボックスに積み上げます。 lstFolders.AddItem strFolder ' 再帰回数をカウントアップします。 lngCount = lngCount + 1 ' 与えられたフォルダ名からフォルダオブジェクトを作成 Set objFolder = objFs.GetFolder(strFolder) ' サブフォルダを列挙し、再帰呼び出しを行います。 For Each objSubFolder In objFolder.SubFolders EnumFolder lstFolders, objSubFolder.Path Next ' 再帰回数をカウントダウンします。 lngCount = lngCount - 1 ' 最初に呼び出されたときのみ、リストボックスを表示し ' FileSystemObject を破棄します。 If lngCount = 0 Then lstFolders.Visible = True Set objFs = Nothing End If End Sub 使うときは、以下のように呼び出します。 Call EnumFolder(List1, "C:\Windows") |
|