Avatar billede mattiasdh Nybegynder
22. maj 2006 - 14:33 Der er 7 kommentarer og
2 løsninger

Vise alle mapper og filer på en liste

Når man trykker på en knap skal programmet vise alle mapper og filer på en liste.

Shell funktionen virker ikke.
Avatar billede martin_moth Mester
22. maj 2006 - 14:39 #1
Alle filer og mapper på hele computeren - eller på C-drevet - eller i en bestemt folder?

Hvad har shell med problemet at gøre?
Avatar billede martin_moth Mester
22. maj 2006 - 14:45 #2
Her er noget kode til at liste alle filer i en bestemt mappe inkl. alle undermapper:

Start VB
Smid en knap på din form, der skal hedde "command1"
Smid en listbox på din form, der skal hedde "List1"
Under Project > References, tilføjer du "Micosoft Scripting Runtime"
Copy-paste nedenstående kode:

<----START KOPIERING---->


Private Sub FindFile(folder As Scripting.folder)
  Dim tmpFolder As Scripting.folder
  Dim tmpFile As Scripting.file
  If folder.SubFolders.Count > 0 Then
    For Each tmpFolder In folder.SubFolders
      FindFile tmpFolder  '< proceduren kalder sig selv (dvs. rekursiv)
    Next
  End If
  If folder.Files.Count > 0 Then
    For Each tmpFile In folder.Files
      List1.AddItem tmpFile.Name
    Next
  End If
End Sub

<----SLUT KOPIERING---->

OG skriv nu ikke "C:\" i første omgang - det kan tage laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaang tid at tælle alle filer. Start med et forsøg, f.eks. c:\temp, hvis der ikke er så mange filer der
Avatar billede martin_moth Mester
22. maj 2006 - 14:46 #3
Fik ikke hele koden med:

<----START KOPIERING---->

Private Sub Command1_Click()
  Dim fso As Scripting.FileSystemObject
  Set fso = New Scripting.FileSystemObject
  List1.Clear
  FindFile fso.GetFolder("c:\temp") 'Ret evt. til "c:\", "c:\dokumenter" e.l.
  msgbox "Slut"
End Sub

Private Sub FindFile(folder As Scripting.folder)
  Dim tmpFolder As Scripting.folder
  Dim tmpFile As Scripting.file
  If folder.SubFolders.Count > 0 Then
    For Each tmpFolder In folder.SubFolders
      FindFile tmpFolder  '< proceduren kalder sig selv (dvs. rekursiv)
    Next
  End If
  If folder.Files.Count > 0 Then
    For Each tmpFile In folder.Files
      List1.AddItem tmpFile.Name
    Next
  End If
End Sub

<----SLUT KOPIERING---->
Avatar billede mattiasdh Nybegynder
22. maj 2006 - 15:21 #4
Det lyder fornuftigt!

Jeg accepterer dit svar, men kan desværre ikke prøve det idag, men gør det så snart som muligt!
Avatar billede mattiasdh Nybegynder
25. maj 2006 - 18:32 #5
Der kommer fejl i linjen:

Private Sub FindFile(folder As Scripting.folder)

|Compile error:|
|User-defined type not defined|

??
Avatar billede martin_moth Mester
25. maj 2006 - 19:15 #6
og du bruger vb6?
Avatar billede martin_moth Mester
25. maj 2006 - 19:15 #7
og har husket reference til ms scripting som beskrevet?
Avatar billede mattiasdh Nybegynder
26. maj 2006 - 10:28 #8
Jeg bruger VB 5.0, og nej, hvordan laver man reference til ms scripting??
Avatar billede martin_moth Mester
26. maj 2006 - 12:18 #9
Du skulle nok have fortalt at du ikke bruger VB6 men VB5 - 99% af VB brugere bruger vist VB6 ;o)

Har beskrevet hvordan du refererer til MS Scripting object ovenfor

:o)
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