Hej igen I mitt arkiv finns denna kod i VBScript som loopar igenom alla mappar och undermappar: Efter ha gjort en idé med en massa olika arrayer och goto osv fick jag en spagethi kod som skulle gjort en italienare avundsjuk. Den funkar dessutom inte hudraprocentigt. Då fick jag en snilleblixt och skrev ihop följande kod. Den funkar dock inte, men jag kan inte fatta vad som är fel. Dir är ju inte lokal för funktionen, det innebär ju att när du anropar funktionen för att läsa underkatalogerna så startas ju en ny sökning, och när du kommer tillbaka så kan du ju inte fortsätta på den första sökningen. Och lösningen är något i stil med: Hej När felet inträffar vad har variablerna Har nog hittat felet. Det är när filerna innehåller vissa tecken i namnet. Ex [ och några andra.lägga mappar och undermappar i en array
Jag vill lägga alla mappar och undermappar från en katalog i en array (sökvägarna). Jag håller på att trixa med min egensnickrade konstiga kod. Den blir bara konstigare och konstigare. Detta borde ju inte vara så krångligt?
Finns det några funktioner som man skulle kunna ta hjälp av?
\jonasSv: lägga mappar och undermappar i en array
http://guffa.com.loopiadns.com/Programming_archive.asp?id=15Sv:lägga mappar och undermappar i en array
<code>
Private Function build_dir_array(mypath As String)
Dim myname As String
myname = Dir(mypath, vbDirectory) 'Hämta första positionen.
Do While myname <> "" ' Om dne inte är tom loopa.
' Skippa nuvarande och föregående mapp . och ...
If myname <> "." And myname <> ".." Then
If (GetAttr(mypath & myname) And vbDirectory) = vbDirectory Then
myname = start_dir & myname & "\"
start_array(position) = myname ' lägg in katalog i array
position = position + 1
build_dir_array (myname)
End If
End If
myname = Dir ' Hämta nästa.
Loop
End Function
</code>
Han kör ett "varv" och anropar med första undermappen(som inte innehåller mappar). Då får jag felmeddelande
"Invalid procedure call or argument" på raden
myname = Dir ' Hämta nästa.
\jonasSv: lägga mappar och undermappar i en array
Sv:lägga mappar och undermappar i en array
sub getarray()
array undermappar
fyll undermappar med dir
gå igenom listan med undermappar, och lägg till dem som du gör nu
end subSv: lägga mappar och undermappar i en array
Min lösning blev såhär:
kod i "start" formulär
<code>
build_dir_array start_path
Do While current < position
build_dir_array start_array(current)
current = current + 1
Loop
</code>
och själva funktionen såhär:
<code>
Private Function build_dir_array(current_dir As String)
Dim myname As String
Dim mypath As String
mypath = current_dir
myname = Dir(mypath, vbDirectory) ' Retrieve the first entry.
Do While myname <> "" ' Start the loop.
' Ignore the current directory and the encompassing directory.
If myname <> "." And myname <> ".." Then
If (GetAttr(mypath & myname) And vbDirectory) = vbDirectory Then
myname = mypath & myname & "\"
start_array(position) = myname ' lägg in katalog i array
position = position + 1
End If
End If
myname = Dir ' Get next entry.
Loop
End Function
</code>
Kanske inte densnyggaste koden, men det funkar!Sv: lägga mappar och undermappar i en array
mypath & myname tilldelats för värden?Sv:lägga mappar och undermappar i en array
Döper jag om dessa filer verkar det funka.