/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
File list (subdirectories)
Fra : The MaXx


Dato : 21-02-01 22:15

Hejsa...

Er der en måde at få en filelist til at vise alle filer både i den mappe som
dens sti peger på, og også filerne i mappens underbiblioteker?

The MaXx



 
 
Carsten Saugmann (22-02-2001)
Kommentar
Fra : Carsten Saugmann


Dato : 22-02-01 22:37

Selv hejsa.

Måske nedenstående kan bruges??

En nem måde er at bruge Filesystemobject. Sæt en reference til "Microsoft
Scripting Runtime" (dll'en hedder SCRRUN.DLL) og prøv følgende, hvor folderen er

angivet (med fuld sti) i Textboxen:

Option Explicit
Dim fso As New FileSystemObject

Private Sub Command1_Click()
Dim fld As Folder
Dim fil As File
Dim strOutputfil As String

Set fld = fso.GetFolder(Text1.Text)
strOutputfil = fld.Path & "\FileInfo.txt"
Open strOutputfil For Output As #1
For Each fil In fld.Files
Print #1, fil.Name
Next
Close #1
MsgBox strOutputfil & " dannet.", vbInformation
End Sub

Lav selv den nødvendige fejlhåntering. Ud over filnavnet har du adgang til en
lang række oplysninger om filerne via fil-objectet.

Mvh/Carsten

The MaXx skriver:

> Hejsa...
>
> Er der en måde at få en filelist til at vise alle filer både i den mappe som
> dens sti peger på, og også filerne i mappens underbiblioteker?
>
> The MaXx



The MaXx (24-02-2001)
Kommentar
Fra : The MaXx


Dato : 24-02-01 00:43

> Måske nedenstående kan bruges??
>
> En nem måde er at bruge Filesystemobject. Sæt en reference til "Microsoft
> Scripting Runtime" (dll'en hedder SCRRUN.DLL) og prøv følgende, hvor
folderen er
>
> angivet (med fuld sti) i Textboxen:
>
> Option Explicit
> Dim fso As New FileSystemObject
>
> Private Sub Command1_Click()
> Dim fld As Folder
> Dim fil As File
> Dim strOutputfil As String
>
> Set fld = fso.GetFolder(Text1.Text)
> strOutputfil = fld.Path & "\FileInfo.txt"
> Open strOutputfil For Output As #1
> For Each fil In fld.Files
> Print #1, fil.Name
> Next
> Close #1
> MsgBox strOutputfil & " dannet.", vbInformation
> End Sub
>
> Lav selv den nødvendige fejlhåntering. Ud over filnavnet har du adgang til
en
> lang række oplysninger om filerne via fil-objectet.

Jeg vil prøve dette men kan ikke helt gennemskue at den skal virke som jeg
vil ha det...
Hvis jeg har denne filstruktur på min hardisk:
C:\fld1\sub1\fil1.txt
C:\fld1\sub2\fil2.txt
C:\fld1\sub3\fil3.txt
Vil den funktion så vise:
fil1.txt
fil2.txt
fil3.txt

og hvad vil der ske hvis to filer i forskellige biblioteker heder det samme
(jeg vil helst have den til at vise filnavnet to gange (en for hver)).
The MaXx



Carsten Saugmann (25-02-2001)
Kommentar
Fra : Carsten Saugmann


Dato : 25-02-01 22:17

OK - jeg kan godt se, at det ikke lige var det, du efterlyste - det gik åbenbart
lidt for stærkt med at svare. Filelistbox kan ikke bruges til også at vise
indholdet af subfolders.

Jeg ved ikke om du kan bruge det, men jeg har prøvet at lave et lille eksempel
med et listview, hvor filen listes i første kolonne, og placeringen i den anden.

Lav et projekt med reference til Microsoft Scripting Runtime, en form med et
listview (View-property = lvwReport, HideColumnHeaders=False), en tekstbox til
startfolderen, en checkbox til at angive, om subfolders skal med, og en
commandbutton.

Undlad venligst at kommentere den manglende navngivningsstandard...
------kodestart------
Option Explicit

Dim fso As Scripting.FileSystemObject

Private Sub cmdListFiles_Click()
Dim fld As Folder
Set fld = fso.GetFolder(Text1.Text)

ListView1.ListItems.Clear
ListFiles fld, CBool(chkInclSubfld.Value)

End Sub

Private Sub Form_Load()
Set fso = New Scripting.FileSystemObject
ListView1.ColumnHeaders.Add , , "Filnavn"
ListView1.ColumnHeaders.Add , , "Mappenavn"

End Sub

Private Sub ListFiles(ByVal fld As Folder, ByVal bIncludeSubfolders As Boolean)
Dim item As ListItem
Dim fldSub As Folder
Dim f As File

For Each f In fld.Files
Set item = ListView1.ListItems.Add(, , f.Name)
item.SubItems(1) = f.Path
Next

If bIncludeSubfolders Then
For Each fldSub In fld.SubFolders
ListFiles fldSub, bIncludeSubfolders
DoEvents
Next
End If
End Sub
-----kodeslut-----

Du kan jo så indlægge passende værdier i Key for de enkelte items, så du kan
bruge den direkte.

Mvh/Carsten

The MaXx skriver:

>
> Jeg vil prøve dette men kan ikke helt gennemskue at den skal virke som jeg
> vil ha det...
> Hvis jeg har denne filstruktur på min hardisk:
> C:\fld1\sub1\fil1.txt
> C:\fld1\sub2\fil2.txt
> C:\fld1\sub3\fil3.txt
> Vil den funktion så vise:
> fil1.txt
> fil2.txt
> fil3.txt
>
> og hvad vil der ske hvis to filer i forskellige biblioteker heder det samme
> (jeg vil helst have den til at vise filnavnet to gange (en for hver)).
> The MaXx



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste