' ... das hier an den Teil1 dranhängen
' Sucht nach einer Datei, und packt das
' Ergebnis in FileData
hFile = FindFirstFile(StartPath & "\" & File & _
vbNullChar, FileData)
' Wenn sie gefunden wurde, dann...
If hFile <> INVALID_HANDLE_VALUE Then
Do
' Ist es ein Verzeichniss oder eine Datei ?
With FileData
If (.dwFileAttributes And vbDirectory) = 0 Then
' Datei
' Nur wenn nicht nur Verzeichinsse gesucht werden
If Not OnlyDirectories Then
' Array vergrößern und Daten ins Array schreiben
On Error GoTo Err_DimFile
ReDim Preserve FileFound(UBound(FileFound) + 1)
On Error GoTo 0
DoEvents
UmPacken FileFound(UBound(FileFound)), _
FileData, StartPath & "\" & File
End If
If StopSearch = True Then Exit Function
ElseIf SearchSubfolder = True Then
' Verzeichnis
' Verzeichnis nur im Array Speichern wenn es
' über dem jetzigen liegt d.h. ".." "." sind
' nicht gültig
If Left$(.cFileName, InStr(.cFileName, vbNullChar) - 1) <> "." _
And Left$(.cFileName, InStr(.cFileName, vbNullChar) - 1) <> ".." Then
On Error GoTo Err_DimDir
ReDim Preserve Directories(UBound(Directories) + 1)
On Error GoTo 0
' Verzeichnis dem Array hinzufügen
Directories(UBound(Directories)) = _
Left$(.cFileName, InStr(.cFileName, vbNullChar) - 1)
End If
End If
End With
DoEvents
Loop Until FindNextFile(hFile, FileData) = 0 Or StopSearch = True
End If
FindClose hFile
' Unteroder durchsuchen
On Error GoTo Err_DimDir
If SearchSubfolder = False Or _
StopSearch = True Then Exit Function
On Error GoTo 0
' Wenn nach anderen Dateien als *.* gesucht wird,
' werden keine Ordner gefunden
' Deshalb noch einmal gezielt nach Ordnern suchen
If Not OnlyDirectories And SearchSubfolder = True And _
File <> "*.*" Then
OnlyDirectories = True
TmpFile = File
File = "*.*"
GoTo SearchOnlySubfolders
ElseIf TmpFile <> "" Then
File = TmpFile
End If
On Error GoTo Err_Exit
For i = 0 To UBound(Directories)
If StopSearch = True Then Exit Function
DoEvents
' Hier ruft die Funktion sich selbst auf - für
' jeden Unterordner
FindFile StartPath & "\" & Directories(i), _
SearchSubfolder, File, FileFound
Next i
Exit Function
Err_DimFile:
ReDim FileFound(0)
Resume Next
Err_DimDir:
ReDim Directories(0)
Resume Next
Err_Exit:
Exit Function ' Sub
Fehler:
modError.ERR_Set Var_ERRModul
End Function
'Packt die Infos um und schneidet Nullchar-Zeichen ab
Private Function UmPacken(ByRef D As Datei, _
FD As WIN32_FIND_DATA, ByVal Path As String)
Var_SubFunction = "UmPacken"
modError.ERR_Clear
On Error GoTo Fehler
With FD
D.Atribute = .dwFileAttributes
D.DateiGröße = .nFileSizeLow
D.Dateiname = Left$(.cFileName, InStr(.cFileName, _
vbNullChar) - 1)
D.DosDateiname = Left$(.cAlternate, _
InStr(.cAlternate, vbNullChar) - 1)
If D.DosDateiname = "" Then _
D.DosDateiname = D.Dateiname
D.ErstelltAM = .ftCreationTime
D.LetzeÄnderung = .ftLastWriteTime
D.LetzterZugriff = .ftLastAccessTime
D.Pfadname = Left$(Path, InStrRev(Path, "\"))
' D.Dateiname = D.Pfadname & D.Dateiname
End With
Exit Function ' Sub
Fehler:
modError.ERR_Set Var_ERRModul
End Function Gruß Tim
*greetz*
Tim
.
http://www.DotNetWorld.de |