Avatar billede dd_ns Nybegynder
20. maj 2003 - 15:46 Der er 18 kommentarer

filer, mapper og størrelser

Hvis jeg nu har:

c:\david.txt
c:\david\david.txt
c:\david\david\david.txt

Jeg vil så gerne at jeg for hver fil har 3 variabler:

Filnavn
Mappe navn
størrelse

Hvordan gøres dette?
Avatar billede michaelemanuel Nybegynder
20. maj 2003 - 16:35 #1
FileName = "david.txt"
Folder = "C:\"
FileSize = FileLen(Folder & FileName)
Avatar billede dd_ns Nybegynder
20. maj 2003 - 16:36 #2
Hvad så med resten?
Avatar billede michaelemanuel Nybegynder
20. maj 2003 - 16:39 #3
Hvad ønsker du mere ?
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:00 #4
Hvis det du ønsker er at liste samtlige filer og mapper, se flg. :

Private Type TFileInfo
  FileName As String
  FolderName As String
  FileSize As Long
End Type

Private Sub ListFiles(ByVal Folder As String, ByRef FileInfo() As TFileInfo, ByRef FileIndex As Long)
  Dim DirList() As String
  Dim iList As Long
  Dim cList As Long
  cList = 256
  ReDim DirList(cList) As String
  Dim FileName As String
  ' Get List of SubFolders and Informations about Files
  If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
  FileName = Dir(Folder & "*.*", vbDirectory)
  Do Until FileName = ""
    If (FileName <> ".") And (FileName <> "..") Then
      If (GetAttr(Folder & FileName) And vbDirectory) <> 0 Then
        ' Add Folder to DirList
        DirList(iList) = FileName
        iList = iList + 1
        If iList = cList Then
          cList = cList + 128
          ReDim Preserve DirList(cList) As String
        End If
      Else
        ' Add Informations to FileInfo
        FileInfo(FileIndex).FolderName = Folder
        FileInfo(FileIndex).FileName = FileName
        FileInfo(FileIndex).FileSize = FileLen(Folder & FileName)
        FileIndex = FileIndex + 1
        If FileIndex = UBound(FileInfo) Then
          ReDim Preserve FileInfo(FileIndex + 128) As TFileInfo
        End If
      End If
    End If
    ' Get Next FileName
    FileName = Dir
  Loop
  ' ListFiles within SubFolders
  For iList = iList - 1 To 0 Step -1
    Call ListFiles(Folder & DirList(iList), FileInfo(), FileIndex)
  Next
End Sub

Private Sub Form_Load()
  Dim FileInfo() As TFileInfo
  ReDim FileInfo(256) As TFileInfo
  Dim FileIndex As Long
  Call ListFiles("C:\", FileInfo(), FileIndex)
End Sub
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:03 #5
JEg prøver lige at forklare det...

Jeg har en database med filname, filsize og fildir
F.eks:
1 - c:\ pedersen.txt 111 KB
2 - c:\kurt\ pedersen2.txt 222 kb

osv...

Den skal så kunne tage og kigge i et bestemt dir efter om der er nogle filer der er i database der IKKE er på harddisken og omvendt...

Forstod du det?
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:06 #6
Det burde du kunne opnå med mit svar (bortset fra database opslag, men den del af problemet har du vel allerede en løsning på, eller hvad ?)
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:09 #7
JEg har lavet den der kigger om der er nogle filer fra databasen der ikke er på harddisken, men ikke den anden vej... Og jeg kan ikke lige gennemskue det du har givet mig der.
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:12 #8
Hvad er det du ikke kan gennemskue ?
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:14 #9
Hvordan man løber et dir igennem inklusiv subdirs... Og menes vi løber, kan den kunne checke dir, filnavn og size
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:18 #10
Det er netop dette mit svar gør.
Hvis du har svært ved at se hvordan koden fungerer, så prøv at køre den i IDE'en og se hvordan det fungerer.
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:22 #11
Når keg prøvet at køre det hele skriver den file not found???
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:23 #12
Hvor i koden ?
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:24 #13
Det gør den ikke nu... Men der er jo ikke noget resultat iform af en txt fil, eller lign... Kan du ikke prøve at forenkle det lidt... Jeg giver gene flere point
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:28 #14
Rutinen returnerer et Array af typen TFileInfo
TFileInfo består af 3 elementer :
  FileName As String
  FolderName As String
  FileSize As Long
Dette er meget mere brugbart end at returnere resultatet i en tekstfil, som du så bagefter skal gennemgå.
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:39 #15
jeg har så prøvet at sige msgbox ubound(fileinfo) men der kommer inden ting...
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 10:43 #16
Hvis du gerne vil have en tekstfil, kan du erstatte
        ' Add Informations to FileInfo
        FileInfo(FileIndex).FolderName = Folder
        FileInfo(FileIndex).FileName = FileName
        FileInfo(FileIndex).FileSize = FileLen(Folder & FileName)
Med følgende
        ' Add Informations to FileInfo
        Print #1, Folder & "," & FileName & "," & FileLen(Folder & FileName)
Hvor du tidligere har åbnet en fil som #1
Avatar billede dd_ns Nybegynder
21. maj 2003 - 10:57 #17
Jeg kan ikke få det til at virke...
Avatar billede michaelemanuel Nybegynder
21. maj 2003 - 11:00 #18
Husk at åbne filen : F.eks.
Open "C:\File.txt" For Output As #1
og efter du er færdig
Close #1
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