Avatar billede ajh87 Nybegynder
20. januar 2004 - 21:16 Der er 1 kommentar og
1 løsning

Lille projekt der kan søge efter filer - men mere end een fil

Skal bruge et lille projekt der er i stand til at søge efter filer på computeren...

tekst feltet hvro du skriver filnavnet / navnene i kan indholdet se sådan ud: "1234.fil; 12345.fil"

altså hvor hver fil sepereres af ;
men hver gang den søger i en mappe skal den søge efter alle filer der står i søge feltet om så der står 1 - 2 - eller 117 filer... :)

håber på hjælp :)

Mvh
Anders
Avatar billede helmet Nybegynder
20. januar 2004 - 23:22 #1
Option Explicit
Dim fso As Scripting.FileSystemObject
Dim filer() As String

Private Sub FindFile(folder As Scripting.folder)
Dim tmpFolder As Scripting.folder
Dim tmpFile As Scripting.File

  If folder.Attributes <> 22 Then 'Nogle systemmapper har man ikke adgang til
    If folder.SubFolders.Count > 0 Then
      For Each tmpFolder In folder.SubFolders
        FindFile tmpFolder
        DoEvents
      Next
    End If
    If folder.Files.Count > 0 Then
      For Each tmpFile In folder.Files
        If FilSøgesEfter(tmpFile.Name) Then
          lstResultat.AddItem tmpFile.Path
        End If
      Next
    End If
  End If
End Sub

Private Sub cmdSøg_Click()
Dim dc As Drive

  If txtSøg.Text <> "" Then
    If InStr(Len(txtSøg.Text), txtSøg.Text, ";", vbTextCompare) > 0 Then txtSøg.Text = Left$(txtSøg.Text, Len(txtSøg.Text) - 1)
    filer() = Split(txtSøg.Text, ";", , vbTextCompare)
    lstResultat.Clear
    For Each dc In fso.Drives 'Søger gennem alle drev
      If dc.DriveType = Fixed Then
        FindFile fso.GetFolder(dc.Path & "\")
      End If
    Next
  End If
End Sub

Private Function FilSøgesEfter(filNavn As String) As Boolean
Dim bFound As Boolean
Dim i As Integer

  i = LBound(filer)
  While Not bFound And i <= UBound(filer)
    If filNavn = filer(i) Then bFound = True
    i = i + 1
  Wend
  FilSøgesEfter = bFound
End Function

Private Sub Form_Load()
  Set fso = New Scripting.FileSystemObject
End Sub

Private Sub Form_Unload(Cancel As Integer)
  End
End Sub

Mit forslag til hvordan det kunne gøres, hvordan det performer hvis du har indtastet 117 filer har jeg ikke lige gidet eksperimentere med.

For at kunne køre det skal der laves en reference til Microsoft Scripting Runtime.
Ellers bare en form med en knap, et tekstfelt og en listboks.
Avatar billede martin_moth Mester
20. januar 2004 - 23:51 #2
Og der er flere eksempler hvis du søger efter dem her på eksperten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester