FAQ 0134: Wie kann ich den Inhalt eines Verzeichnisses auslesen?
von Helge Rex
Frage
Wie lese ich den Inhalt eines beliebigen Ordners aus?
VB-Bordmittel
Visual Basic stellt die Funktion Dir$ zur Verfügung, mit dem man die Inhalte eines Ordners ermitteln kann.
Ordner mit Dir$ rekursiv durchsuchen [Tipp 0414]
Funktionen der Windows-API
Dateien und Verzeichnisse rekursiv suchen [Tipp 0128]
Hier ist ein Beispiel, wie man dies als Klasse verpacken kann:
clsFindFile, Beispiel zu clsFindFile
Mit Hilfe einer Listbox
Wie man eine Listbox mit dieser Aufgabe betrauen kann, zeigt folgendes Beispiel von pks.
'-------------------------------- ' Module ' 'liefert die Anzahl Dateien in einem Folder 'und die Dateinamen in eine ListBox '-------------------------------- Option Explicit Private Declare Function SendMessageStr Lib "user32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As String) As Long Private Const LB_DIR As Long = &H18D Private Const DDL_ARCHIVE As Long = &H20 Private Const DDL_DIRECTORY As Long = &H10 Private Const DDL_DRIVES As Long = &H4000 Private Const DDL_EXCLUSIVE As Long = &H8000 Private Const DDL_HIDDEN As Long = &H2 Private Const DDL_READONLY As Long = &H1 Private Const DDL_READWRITE As Long = &H0 Private Const DDL_SYSTEM As Long = &H4 Public Function GetFilesFromFolderAPI( _ ByRef LBox As ListBox, _ ByVal Path As String, _ Optional ByVal Filter As String = "*.*") As Long Dim Result As Long Dim s As String ' Path und Filter zusammenführen s = Path If Right$(s, 1) <> "\" Then s = s & "\" End If s = s & Filter LBox.Clear 'abrufen Result = SendMessageStr(LBox.hwnd, LB_Dir, DDL_READWRITE, s) GetFilesFromFolderAPI = Result + 1 End Function
If (GetFilesFromFolderAPI(Me.List1, "C:\Windows", "*.ini") <> 0) Then ' mindestens eine Datei wurde gefunden End If
Mit Hilfe einer Combobox
Auch eine Combobox kann diese Aufgabe übernehmen. Wie es geht, zeigt das zweite Beispiel zu CB_DIR im ActiveVB-API-Wiki.
Ihre Meinung
Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.