Avatar billede anders159 Nybegynder
25. maj 2004 - 15:27 Der er 11 kommentarer og
1 løsning

Finde filer i en mappe

Hejsa

jeg har et lille problem med at læse nogle specifike filer fra en mappe.

Jeg har f.eks mappen bin, i denne ligger der en masse filer og andre mapper. Nu vil jeg så gerne kun have de filer der ender på .vbr

håber nogen har et hurtigt bud ;)
Avatar billede joern Nybegynder
25. maj 2004 - 15:33 #1
Hej.

Du kan bruge kontrollen FileListBox og dér sætte pattern til *.vbr.

M.v.h.  Jørn
Avatar billede tubber Juniormester
25. maj 2004 - 15:46 #2
Det kan kombineres med en dirlistbox og drivelistbox
og måske en combobox til at vælge filtyper i

her er et eksempel:

Private Sub Form_Load()
Combo1.Text = "*.*"
Combo1.AddItem ("*.*"), 0
Combo1.AddItem ("*.exe"), 1
Combo1.AddItem ("*.dll"), 2
Combo1.AddItem ("*.vbr"), 3
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Combo1_Click()
File1.Pattern = Combo1.Text
End Sub
Avatar billede anders159 Nybegynder
25. maj 2004 - 15:50 #3
hej igen
kan ikke lige finde den omtalte komponent(filListBox), men har ikke brug for at for det visualiseret, men bare at få en liste med alle de filnavne, der ender på .vbr
Avatar billede martin_moth Mester
25. maj 2004 - 16:27 #4
Kan du ikke finde filelistbox? Den er på dit panel over kontroller. Det er klart det nemmeste, det fylder EN linie kode:

  File1.pattern = "*.vbr"

Hvis du ikke vil have det visualiseret, kan du sætte

  file1.visible=false

Hvis du ikek vil have det visualiseret, hvordan vil du så have listen over alle filerne - i et array, i en string, i en textfil, i hvad?
Avatar billede joern Nybegynder
25. maj 2004 - 20:42 #5
Hej Anders.

"Jesus er svaret, men hvad var spørgsmålet"?

Du må ikke bruge så svære ord.  Når du vil 'læse' vbr-filer, er det så en automatisk funktion der læser den ene efter den anden?  Og hvad gør programmet med det som er læst?
Du har nu fået svar på dit spørgsmål - med uddybende spørgsmål.  Forklar hvis du vil have hjælp.

M.v.h.  Jørn
Avatar billede anders159 Nybegynder
26. maj 2004 - 08:51 #6
hehe..... Ja Jesus var sq god nok ;)

Men ok, jeg skal bruge den specifikke sti på alle de .vbr filer der ligge i en given mappe. At få disse referencer i et array, ville være fint.

lige nu fungere min komponent fint med en statisk reference til en .vbr fil

Eks. -->  FSO.OpenTextFile(App.Path & "\APP_SRV_adm.VBR")

så jeg mangler bare at kunne løbe mappen igennem og fylde et array med navnene på alle de .vbr filer der er.

Jeg vil gerne ungå at have en form, så en løsning uden visuelle komponenter ville være at fedt.

hej så længe ;)
Avatar billede joern Nybegynder
26. maj 2004 - 09:49 #7
Hej.

Tak for uddybning.  Jeg har aldrig arbejdet med VB uden synlige forms.  Måske en anden kan foreslå en løsning, nu hvor opgaven er beskrevet.

M.v.h.  Jørn
Avatar billede martin_moth Mester
26. maj 2004 - 10:55 #8
Jeg holder nu fast i Jørns løsning:

  Dim filarray() As String
  Dim i As Long
  File1.Path = "C:\"
  File1.Pattern = "*.vbr"
  If File1.ListCount > 0 Then
    For i = 0 To File1.ListCount
      ReDim Preserve filarray(i)
      filarray(i) = File1.List(i)
    Next i
  End If

Så er dit filarray() fyldt af alle de *.vbr filer der findes på c:\
Avatar billede martin_moth Mester
26. maj 2004 - 10:56 #9
PS: Du kan jo oprette en filelist runtime, hvis du ønsker det.

Hvis du ikek har en form, hvor skriver du så al din kode - i et modul?
Avatar billede martin_moth Mester
26. maj 2004 - 11:04 #10
Du kan jo også bruge FSO:


Opret reference til MicroSoft Scripting Runtime (Project -> References)

Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
FindFile "vbr", fso.GetFolder("c:\")


'--- Søgerutine---
Private Sub FindFile(SearchEXT as String, folder As Scripting.folder)

Dim tmpFolder As Scripting.folder
Dim tmpFile As Scripting.File

If folder.Files.Count > 0 Then
  For Each tmpFile In folder.Files
    If lcase(right(tmpFile.Name,3)) = lcase(searchEXT) Then
      msgbox "Fil fundet : " & tmpfile.name
        'Mere kode - f.eks. smid den over i et array
      End If
    Next
  End If
End Sub
Avatar billede martin_moth Mester
26. maj 2004 - 11:06 #11
Drop linien

  Dim tmpFolder As Scripting.folder

Den bruges ikke
Avatar billede anders159 Nybegynder
26. maj 2004 - 11:22 #12
hej igen.

så kom det til at virke..... 1000 tak.

sådan ser det ud
--------------------------------------------------
Private Sub FindFile(folder As Scripting.folder)
Dim i As Integer

Dim tmpFolder As Scripting.folder
Dim tmpFile As Scripting.File
ReDim FilesToDelete(0)
i = 0

 
  If folder.Files.Count > 0 Then
    For Each tmpFile In folder.Files
      If InStr(1, tmpFile.Name, ".VBR") Then
      ReDim Preserve FilesToDelete(i)
      FilesToDelete(i) = tmpFile.Name
        i = i + 1
        'MsgBox "Fil fundet : " & tmpFile.Name
      End If
    Next
  End If
 
End Sub
-------------------------------------------------------
så her lige nogle points ;)
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