VB6.0でのDir()関数の使い方
VBで指定されたメンバー関数dirは、指定されたタイプまたは指定されたファイル属性を満たすファイル名、ディレクトリ名またはボリュームのラベル名を返します.dir関数の構文構造は、次のとおりです.
Member Function Dir[(Pathname[,attributes])] As String
パラメータPathnameは通常、ディレクトリまたはフォルダ、およびドライブシンボルを含むファイル名です.指定したPathnameが見つからない場合、dir文はゼロ長の文字列("")を返し、マルチ文字ワイルドカードおよびシングル文字ワイルドカードをサポートします.次の点に注意してください.
1.プログラムでdir関数を最初に呼び出すときにpathnameパラメータを指定する必要があります.そうしないと、実行エラーが発生します.
2.dir関数はpathname条件を満たす最初のファイル名またはディレクトリ名のみを返します.残りの条件を満たすファイル名を得るには、パラメータを持たずにdir関数を再度呼び出すことができます.一致するファイルがない場合、dir関数はゼロ長の文字列を返します.この場合、dir関数を呼び出したい場合は、pathnameパラメータを指定する必要があります.そうしないと、実行エラーが発生します.
3.現在のpathnameマッチング条件を満たすファイルが取得されない場合、新しいpathname値を変更できますが、dir関数を再帰的に呼び出すことはできません.
4.dir関数を呼び出すときに属性パラメータをvbdirectoryに設定しても、サブディレクトリは連続的に返されず、現在のディレクトリの下のディレクトリのみが返されます.
例1
例2
’条件に合致する条件とディレクトリを分類し、対応する配列に格納し、出力を完了する
Dir関数は、ネイティブにファイルまたはディレクトリがあるかどうかを判断しないでバックグラウンドでユーザーが探して提示するのを助け、runなどの指定操作を完了するために、そのファイルまたはディレクトリを使用します.しかし、再帰的に使用できないため、ツリー全体を一度に検索することはできません.さらに悪いことに、vbは複数の知らないディレクトリで特定のファイルまたはファイルクラスタを検索するためのツールを提供していません.幸いなことにwin 32 apiは、いくつかのファイル検索方法(SearchPath,FindFirstFile,FindNextFileなど)を提供しています.また、既存のファイル検索知識を利用して、ユーザーが1つを選択できるように、検索したファイルを表示するlistboxコントロールを作成することもできます.ディスカッショングループに入ってディスカッションします.
Member Function Dir[(Pathname[,attributes])] As String
パラメータPathnameは通常、ディレクトリまたはフォルダ、およびドライブシンボルを含むファイル名です.指定したPathnameが見つからない場合、dir文はゼロ長の文字列("")を返し、マルチ文字ワイルドカードおよびシングル文字ワイルドカードをサポートします.次の点に注意してください.
1.プログラムでdir関数を最初に呼び出すときにpathnameパラメータを指定する必要があります.そうしないと、実行エラーが発生します.
2.dir関数はpathname条件を満たす最初のファイル名またはディレクトリ名のみを返します.残りの条件を満たすファイル名を得るには、パラメータを持たずにdir関数を再度呼び出すことができます.一致するファイルがない場合、dir関数はゼロ長の文字列を返します.この場合、dir関数を呼び出したい場合は、pathnameパラメータを指定する必要があります.そうしないと、実行エラーが発生します.
3.現在のpathnameマッチング条件を満たすファイルが取得されない場合、新しいpathname値を変更できますが、dir関数を再帰的に呼び出すことはできません.
4.dir関数を呼び出すときに属性パラメータをvbdirectoryに設定しても、サブディレクトリは連続的に返されず、現在のディレクトリの下のディレクトリのみが返されます.
例1
Public Sub main()
Dim filenames As String
filenames = Dir("c:\", vbNormal + vbDirectory)
Do While filenames <> ""
Debug.Print filenames
filenames = Dir ’ dir ,
Loop
End Sub
例2
’条件に合致する条件とディレクトリを分類し、対応する配列に格納し、出力を完了する
Public Sub main()
Dim FileNames As String, DirNames As String
Dim FileArray() As String, DirArray() As String
Dim TotalDirs As Integer, TotalFiles As Integer
Dim iLoop As Integer
DirNames = "c:\"
FileNames = Dir(DirNames ,vbNormal + vbDirectory)
Do While FileNames <> ""
If FileNames <> "." And FileNames <> ".." Then
If (GetAttr(DirNames & FileNames) And vbDirectory) = vbDirectory Then
TotalDirs = TotalDirs + 1
ReDim Preserve DirArray(TotalDirs)
DirArray(TotalDirs) = FileNames
Else
TotalFiles = TotalFiles + 1
ReDim Preserve FileArray(TotalFiles)
FileArray(TotalFiles) = FileNames
End If
End If
FileNames = Dir
Loop
’ ,
Debug.Print "___Directories______"
For iLoop = 0 To UBound(DirArray)
Debug.Print DirArray(iLoop)
Next
Debug.Print "___Files____"
For iLoop = 0 To UBound(FileArray)
Debug.Print FileArray(iLoop)
Next
End Sub
Dir関数は、ネイティブにファイルまたはディレクトリがあるかどうかを判断しないでバックグラウンドでユーザーが探して提示するのを助け、runなどの指定操作を完了するために、そのファイルまたはディレクトリを使用します.しかし、再帰的に使用できないため、ツリー全体を一度に検索することはできません.さらに悪いことに、vbは複数の知らないディレクトリで特定のファイルまたはファイルクラスタを検索するためのツールを提供していません.幸いなことにwin 32 apiは、いくつかのファイル検索方法(SearchPath,FindFirstFile,FindNextFileなど)を提供しています.また、既存のファイル検索知識を利用して、ユーザーが1つを選択できるように、検索したファイルを表示するlistboxコントロールを作成することもできます.ディスカッショングループに入ってディスカッションします.