[ VRKY @ 15.10.2004. 19:28 ] @
Kako u VB mogu npr. na cijelom C disku tražiti foldere sa nekim specifičnim imenom npr. Video .našao sam u API-u funkcije FindFirstFile i FindNextFile ali mi baš ne odgovaraju.
[ Aleksandar Ružičić @ 15.10.2004. 23:09 ] @
Evo ja sam ovaj kod koristio da ispunim TreeView kontrolu sa svi folderima na nekoj particiji. Ti ga samo malo prepravi da odgovara tvojim potrebama...
Code:

Public Sub generateTree(tvw As TreeView, rootFolder As String)
On Error Resume Next
    Dim rootDir As Folder
    Dim nodX As Node
    
    'first to see if given path is true
    If FSO.FolderExists(rootFolder) = False Then Exit Sub
    Set rootDir = FSO.GetFolder(rootFolder) 'then get that folder
    'add it s root
    Set nodX = tvw.Nodes.Add(, , rootDir.Path, rootDir.Path, "FOLDER")
    nodX.Expanded = True
    
    For Each oDir In rootDir.SubFolders 'for each subfolder in folder
        'call addDir sub...
        addDir CStr(oDir), tvw
    
    Next oDir
    
End Sub
'this sub isn't mine (i found it somewhere on net, but i forgoted where), i just
'made some changes. it takes given folder name and add it (folder) and all his
'SubFolders in tree view
Private Sub addDir(dirname As String, tvw As TreeView)
    
    
    Dim rootFolder As Folder, currentFolder As Folder, subFolder As Folder
    Dim parentName As String
    Dim nodX As Node
    
    Set rootFolder = FSO.GetFolder(dirname) 'first get folder
    
    If Not rootFolder.IsRootFolder Then 'check to see if folder isn't root
    
        parentName = rootFolder.ParentFolder
        
        Set nodX = tvw.Nodes.Add(parentName, tvwChild, rootFolder, rootFolder.Name, "FOLDER")
        
    End If
    
    'here gets all subfolders in given folder
    For Each currentFolder In rootFolder.SubFolders
        'and add it to tree
        Set nodX = tvw.Nodes.Add(CStr(rootFolder), tvwChild, currentFolder, currentFolder.Name, "FOLDER")
        
        For Each subFolder In currentFolder.SubFolders 'for each subfolder in subfolder
            'everything goes again...
            addDir subFolder.Path, tvw
            
        Next subFolder
        
    Next currentFolder
    
End Sub

Ako bas nemozes sam mogu ja da ti je malo sredim...
[ VRKY @ 16.10.2004. 20:41 ] @
Hvala
[ Shadowed @ 17.10.2004. 14:24 ] @
Da li ti treba samo za foldere u root-u ili i za podfoldere?
Inace, ovaj mi kod izgleda priilicno neoptimizovan...
[ VRKY @ 17.10.2004. 14:33 ] @
Treba mi za obadvoje....
[ reiser @ 17.10.2004. 14:58 ] @
Pogledaj
http://www.experts-exchange.co...s/Visual_Basic/Q_21022586.html
http://support.microsoft.com/default.aspx?scid=kb;EN-US;306666
[ Shadowed @ 17.10.2004. 15:15 ] @
@VRKY. Onda ti preporucujem da koristis rekurzivnu funkciju (koja moze biti jednostavnija od onih koje ti je dao krckoorascic). I koja je, BTW, verovatno na nekom od ona dva linka gore (nisam otvarao linkove):).
[ VRKY @ 17.10.2004. 16:07 ] @
Hvala. Sad ću ić malo to pogledat.
[ VRKY @ 17.10.2004. 16:18 ] @
Kolko sam vidio 2. link je za VB NET. Prvi je prilično dobar. Ja sam negdje naletio na ovaj primjer ali ne radi baš nešto OK.
Code:

Private Sub Form_Load()
FindStuff "C:\"
End Sub
Function FindStuff(sBegin As String)
Dim Search As Object, Fold
Set Search = CreateObject("Scripting.FileSystemObjects")
For Each Fold In Search.GetFolder(sBegin).SubFolders
If InStr(LCase(Fold), "ES") Then
MsgBox "Imaa"
End If
Call FindStuff(Fold.Path)
Next Fold
End Function
[ Shadowed @ 17.10.2004. 16:27 ] @
Na to sam mislio al' me mrzelo da pisem :) pa sam ti samo dao hint za rekurzivnu funkciju.
[ reiser @ 17.10.2004. 16:32 ] @
Treba
Code:
If InStr(UCase(Fold), "ES") Then


(obrati na paznju kako koristis UCase/LCase funkcije)
[ VRKY @ 17.10.2004. 16:34 ] @
Gledasam malo po kodu... (ovom koji sam ja gore postovao) ali ne mogu naći grešku... zbog koje ne radi...
[ VRKY @ 17.10.2004. 16:39 ] @
Greška je slijedeća:

A kad odem na DEBUG pokaže da je ovdje greška:

Code:

Set Search = CreateObject("Scripting.FileSystemObjects")
[ Shadowed @ 17.10.2004. 16:55 ] @
Prblem je u Set Search = CreateObject("Scripting.FileSystemObjects"). Ne treba ti "s". Da bi izbegavao pojavljivanje ovakvih situacija obicno je bolje koristiti Early Binding. Bice ti lakse pri pisanju programa.
[ VRKY @ 17.10.2004. 17:56 ] @
Hvala,sad donekle radi. Malo ću još optimizirati kod pa se nadam da će bit bolje.
[ VRKY @ 17.10.2004. 18:16 ] @
Upravo sam išao još dodat u kod kod za kopiranje fajlova i to fino napravim i pokrenem, i nastane greška. A riječ je o: Fajl bi se trebao samo iskopirati u foldere pod imenom ES a kopije nastale po cijelom C disku... Zna li ko u čemu je greška?

Code:

Private Sub Form_Load()
FindStuff "C:\"
End Sub
Function FindStuff(sBegin As String)
Dim Search As Object, Fold
Set Search = CreateObject("Scripting.FileSystemObject")
For Each Fold In Search.GetFolder(sBegin).SubFolders
If InStr(UCase(Fold), "ES") Then
FileCopy App.Path & "\" & App.EXEName & ".exe", Fold.Path & "Vrky.exe"
End If
Call FindStuff(Fold.Path)
Next Fold
End Function


Ja sam tražio grešku ali bez uspjeha...
[ Shadowed @ 18.10.2004. 15:51 ] @
Da ti ne bih bio debuger a i da malo mucnes glavom reci cu ti gde je greska al' ne i u cemu ;). Ako ne pronadjes kasnije cu ti reci. Evo linije gde se greska nalazi:
Code:
FileCopy App.Path & "\" & App.EXEName & ".exe", Fold.Path & "Vrky.exe"
[ VRKY @ 18.10.2004. 16:09 ] @
Vjerovatno je onda greška tu:

Code:

Fold.Path & "Vrky.exe"

[ VRKY @ 18.10.2004. 19:56 ] @
Ja mislim da je grešak u onome što sam naveo ali kako grešku ispravit (ako je to greška)?
[ Shadowed @ 19.10.2004. 13:41 ] @
Code:

Fold.Path & "\" & "Vrky.exe"
[ VRKY @ 19.10.2004. 13:46 ] @
Hvala, na to nisam ni mislio.))))))
[ VRKY @ 19.10.2004. 13:49 ] @
Upravo idem probat i pokrenem ,čekam,čekam i onda dođe error:
Code:

Run-time error '70':
Premission denied

Odem na DEBUG i prkaže da je greška ovdje:
Code:

For Each Fold In Search.GetFolder(sBegin).SubFolders
[ Shadowed @ 19.10.2004. 13:55 ] @
Pa, ocigledno u nekom direktorijumu nemas pravo citanja (ili izlistavanja sadrzaja).