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")



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-25 (日) 23:55:55 (2973d)