Hejsan! Om du har en indexeringsserver som har hela hårdisken's alla mp3or lagrade så skulle det kunna gå, men annars får du nog söka mapp för mapp Jag spånar: Jag har en funktion här som jag tycker är väldigt snabb iaf. Har snabbat upp din funktion lite. Lagt upp ett exempel med det i filarean:Lista filer
Jag har sökt bra länge nu men inte hittat nått som kan uppfylla det jag vill.
Jag vill kunna visa alla t.ex. mp3-låtar, som finns på hårddisken.
Finns det nått snabbt och stabilt sätt att lösa detta på?
/JohanSv: Lista filer
Sv: Lista filer
Gör ett program som scannar.
offra en lite stund på att scanna datorn en gång efter mp3, sedan kollar man varje mapp om storleken ändrats o då uppdaterar enbart denna?
Det borde gå fort o kolla storlek på varje mapp för sig eller?
Resultstet av mp3:or sparas i en lista med sökvägar till filen.Sv: Lista filer
<code>
'General Declarations
Dim bolStop as Boolean
Function FindFiles(Path As String, SearchStr As String, List As ListView, FileCount As Integer, DirCount As Integer)
On Error Resume Next
Dim FileName As String
Dim DirName As String
Dim dirNames() As String
Dim nDir As Integer
Dim i As Integer
bolStop = False
If Right(Path, 1) <> "\" Then Path = Path & "\"
nDir = 0
ReDim dirNames(nDir)
DirName = Dir(Path, vbDirectory Or vbHidden)
Do While Len(DirName) > 0
If bolStop = True Then GoTo AbortFunction
If (DirName <> ".") And (DirName <> "..") Then
If GetAttr(Path & DirName) And vbDirectory Then
dirNames(nDir) = DirName
DirCount = DirCount + 1
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
DirName = Dir()
DoEvents
Loop
FileName = Dir(Path & SearchStr, vbNormal Or vbHidden Or vbSystem Or vbReadOnly)
While Len(FileName) <> 0
If bolStop = True Then GoTo AbortFunction
FindFiles = FindFiles + FileLen(Path & FileName)
FileCount = FileCount + 1
lngTotalFilesize = lngTotalFilesize + Round(FileLen(Path & FileName) / 1024, 0)
With List.ListItems.Add
.Text = FileName
.SubItems(1) = Round(FileLen(Path & FileName) / 1048576, 0) & " Mb"
.SubItems(2) = Path
.Tag = FileLen(Path & FileName)
End With
FileName = Dir()
DoEvents
Wend
If nDir > 0 Then
For i = 0 To nDir - 1
If bolStop = True Then GoTo AbortFunction
FindFiles = FindFiles + FindFiles(Path & dirNames(i) & "\", SearchStr, lwFiles, FileCount, DirCount)
DoEvents
Next i
End If
AbortFunction:
Exit Function
End Function
</code>
<code>
Private Sub Command1_Click() 'Search
FindFiles "C:\", "*.mp3", ListView1, NumFiles, NumDirs
End Sub
Private Sub Command2_Click() 'Stop
bolStop = True
End Sub
</code>
/MickeSv: Lista filer
Programarkivet:Sök filer med hjälp av stack