/ 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
Find en fil !!
Fra : Tue Hellstern


Dato : 26-05-02 17:58

Hej NG,

Jeg har et "lille" problem

Hvordan "leder" man efter en fil på hele harddisken, jeg har bruge for at
vide om en bestemt file er på brugerens maskine. Hvis den er der skal jeg
bruge stien ned til den.

Det er i VB 6.0 jeg skal bruge denne oplysning.

Jeg har prøvet at lede i hjælpen men jeg kan ikke finde noget.



Tue




 
 
Harald Staff (26-05-2002)
Kommentar
Fra : Harald Staff


Dato : 26-05-02 19:05

Hei Tue

Det tar litt tid -men her er et rekursivt søk som finner Bookmark.htm på
C:\.

'*******************
Option Explicit

Dim blnFoundit As Boolean

Private Sub Btn1_Click()
blnFoundit = False
Call GetFilesInDirectory("C:\", "*.htm")
Call LookForDirectories("C:\", "*.htm")
End Sub

Sub LookForDirectories(ByVal DirToSearch As String, _
strSuffix As String)
Dim counter As Integer
Dim i As Integer
Dim Directories() As String
Dim Contents As String
counter = 0
If Right(DirToSearch, 1) <> "\" Then DirToSearch = DirToSearch & "\"
Contents = Dir(DirToSearch, vbDirectory)
Do While Contents <> ""
If Contents <> "." And Contents <> ".." Then
If (GetAttr(DirToSearch & Contents) And _
vbDirectory) = vbDirectory Then
counter% = counter% + 1
ReDim Preserve Directories(counter)
Directories(counter) = DirToSearch & Contents
End If
End If
Contents = Dir
Loop
If counter = 0 Then Exit Sub
For i = 1 To counter

Call GetFilesInDirectory(Directories(i), strSuffix)
If blnFoundit = True Then Exit Sub
Call LookForDirectories(Directories(i), strSuffix)
Next i
End Sub

Sub GetFilesInDirectory(ByVal DirToSearch As String, _
strSuffix As String)
Dim NextFile As String
'Dim itmX As ListItem
On Error Resume Next
NextFile = Dir(DirToSearch & "\" & strSuffix)
Do Until NextFile = ""
If NextFile = "Bookmark.htm" Then
blnFoundit = True
MsgBox "Found it at " & DirToSearch
Exit Sub
End If
NextFile = Dir()
Loop
End Sub

HTH. Beste hilsen Harald
"Tue Hellstern" <info@f1-support.dk> skrev i melding
news:3cf11426$0$70509$edfadb0f@dspool01.news.tele.dk...
> Hej NG,
>
> Jeg har et "lille" problem
>
> Hvordan "leder" man efter en fil på hele harddisken, jeg har bruge for at
> vide om en bestemt file er på brugerens maskine. Hvis den er der skal jeg
> bruge stien ned til den.
>
> Det er i VB 6.0 jeg skal bruge denne oplysning.
>
> Jeg har prøvet at lede i hjælpen men jeg kan ikke finde noget.
>
>
>
> Tue
>
>
>



Tomas Christiansen (26-05-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 26-05-02 21:25

Harald Staff skrev:
> Sub LookForDirectories(ByVal DirToSearch As String, _
> strSuffix As String)
....
> Sub GetFilesInDirectory(ByVal DirToSearch As String, _

Hvis man vil bruge bruge Microsoft Scripting Runtime (som ligger på
alle nyere systemer), kan det gøres en hel del enklere, når man blot
vil finde stien til én bestemt fil. Husk først at gå i Project,
References og sæt "hak" ved Microsoft Scripting Runtime inden
nedenstående kode forsøges benyttet:

Private Function FindFilePath( _
ByVal sRootDir As String, _
ByVal sFilename As String) As String

Dim oFSO As Scripting.FileSystemObject
Dim oDir As Scripting.Folder
Set oFSO = New FileSystemObject

If oFSO.FileExists(sRootDir & sFilename) Then
FindFilePath = sRootDir
Exit Function
End If

For Each oDir In oFSO.GetFolder(sRootDir).SubFolders
FindFilePath = FindFilePath(oDir.Path & "\", sFilename)
If Len(FindFilePath) > 0 Then Exit Function
Next
End Function

Benyttes f.eks. således:

MsgBox FindFilePath("C:\", "mdacsdk.msi")

OBS: Husk blot at funktionens første argument. sRootDir, stedet hvor
fra søgningen udspringer, skal *ALTID* afsluttes med en backslash
("\"). Desuden er afsluttes den returnerede sti altid med en
backslash.

-------
Tomas


Tue Hellstern (26-05-2002)
Kommentar
Fra : Tue Hellstern


Dato : 26-05-02 22:21

Hej,
Mange tak for to gode forslag.
Jeg tror jeg vil holde mig til det sidste far Tomas det ser "derligt"
simpelt ud.
Men mange tak for begge forslag.

Tue



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste