フォルダ内のファイルを再帰的に検索するには?

解決


ぼすMk2  2002-09-09 16:14:54  No: 76102  IP: [192.*.*.*]

あるフォルダにぶら下がっている、全てのファイルのバックアップに必要な容量を得る関数を作成したいのですが、C言語の FindFirst FindNext のように使える組み込み関数はありますか?。またVBのプロシージャは再帰処理できるのでしょうか。

編集 削除
匿名  2002-09-09 17:05:16  No: 76103  IP: [192.*.*.*]

> VBのプロシージャは再帰処理できるのでしょうか。

出来ます。例えば
Faxt(n) = n! (階乗) を求める場合は次のような感じ。

Private Function Fact(n As Long) As Long
  If n = 1 Then
    Fact = 1
  Else
    Fact = n * Fact(n - 1)
  End If
End Function

上を下のようには出来ないので、ご注意を。

Private Function Fact(n As Integer) As Double
  Faxt = IIf(n = 1, 1, n * Faxt(n - 1))
End Function

編集 削除
Say  2002-09-10 00:53:43  No: 76104  IP: [192.*.*.*]

残念ながらファイル検索用のDir関数は再帰不能です。
Dirを使うなら、結果をスタックに保持する工夫が必要です。
他にFileSystemObjectのFoldersコレクションを使う
方法もありますが、パフォーマンスを考えるなら、
API使った方がいいかもしれません。
(本当にパフォーマンス優先なら、容量算出DLLをC/C++で作り、
VBからはそれを呼ぶだけにするべきでしょうが)

編集 削除
ぼすMk2  2002-09-10 11:16:44  No: 76105  IP: [192.*.*.*]

う〜んやっぱりファイル検索VBでは難しいのですね、時間があればC/C++の勉強をしたいと思います。
匿名さん、SAYさんどうもありがとうございました。

編集 削除