[VB6] Directories enumereren *

Pagina: 1
Acties:

  • Apen-nootjes
  • Registratie: September 2001
  • Laatst online: 03-04-2025

Apen-nootjes

aka Apen-klootjes

Topicstarter
Ik ben al ff aan het zoeken geweest maar kom er niet uit.. (ook omdat ik niet echt een goede zoekterm kan bedenken)

Maar ik wil alle directory's op een bepaalde schijf in een Arrey zetten.. ik heb alleen geen idee hoe ik dat moet doen.. Iemand een idee??

Met de DirListBox weet ik niet of zoiets mogelijk is.. (volgensmij niet)

Gaat om VB6 btw...

[ Voor 5% gewijzigd door Apen-nootjes op 23-09-2003 08:56 ]

SmartDoDo: Ach, afhankelijk van je smaak kan het best een lekker geil ding zijn :P
You never had a date you couldn't inflate


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 18:33
Misschien zou je kunnen zoeken op het "Dir" keyword ? ( ....... )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

It's scientifically known, that base improves the tase of cheezes!


Verwijderd

Ik vraag me even af waarvoor je het nodig hebt? Ik neem aan dat je de namen van de subdirs in een array wilt hebben? Dus een string-array? Of wil je een boom structuur maken van objecten? Maar dat kan al met de DirListBox!

Ik weet dus eigenlijk niet precies wat je nou wilt, als je alle dirs/subdirs in een stringarray wilt zetten vergeet het dan maar, wordt te gierend groot...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Allereerst heet zo'n ding een 'Array', dat kan al wat schelen. Maar wat je denk ik het belangrijkste mist is de voorkennis dat je recursief kunt programmeren. Oftewel je vraagt de root-dir op, loopt daar overheen, voegt alle elementen toe aan een array, en voor een directory roep je jezelf aan. Pseudocode:
code:
1
2
3
4
foreach Element in Directory
  if File add to List
  if Dir call self
end foreach

Verder nogal basic, zo kom je er wel uit :)

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ik weet dus eigenlijk niet precies wat je nou wilt, als je alle dirs/subdirs in een stringarray wilt zetten vergeet het dan maar, wordt te gierend groot...
Dat valt verbazend mee, gemiddelde harde schijf heeft zo'n 80000-100000 bestanden in mijn ervaring. Tot een half miljoen of zo moet het makkelijk kunnen hoor.

Tevens verplicht niemand je om op de root te beginnen, misschien wil ie het wel doen voor D:\Mp3 :Y)

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Apennootjes beweert dat ie z'n probleem duidelijker kan omschrijven en we tot nu toe het verkeerde probleem hebben beantwoord, dus heropend :D

Professionele website nodig?


  • Apen-nootjes
  • Registratie: September 2001
  • Laatst online: 03-04-2025

Apen-nootjes

aka Apen-klootjes

Topicstarter
curry684 schreef op 23 September 2003 @ 21:05:
Apennootjes beweert dat ie z'n probleem duidelijker kan omschrijven en we tot nu toe het verkeerde probleem hebben beantwoord, dus heropend :D
Tnks curry684...

Ik zal proberen het probleem duidelijker uit te leggen:

Ik heb een server waar een bepaalde structuur in zit:

Root => gebruikersmap => mappen gebruiker

Wat ik dus wil is alle gebruikersmappen de namen van weten en deze in een Array zetten...

Dus ik heb:

c:\UsermapA\Andere mappen&bestanden
c:\UsermapB\Andere mappen&bestanden

Nu moet hij dit dus automatisch alle mappen langs lopen... en krijg ik dus in m'n array het volgende te staan:

map(0) = UsermapA
map(1) = UsermapB

Wat daarachter nog komt boeit me niet zoveel...

Moet dus 1 niveau diep alle mappen weten en in een array krijgen voor de rest niks!

Ik had dit nog duidelijker staan in het mailjte naar curry684 maar dat staat in een mailtje op m'n stage.. zal ik dus morgen ff opzoeken...

SmartDoDo: Ach, afhankelijk van je smaak kan het best een lekker geil ding zijn :P
You never had a date you couldn't inflate


Verwijderd

Zelfde principe...
Dir functie

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim UserMaps() as String
Dim i as Long 
 
i = 0
 
' Display the names in C:\ that represent directories.
MyPath = "c:\"   ' Set the path.
MyName = Dir(MyPath, vbDirectory)   ' Retrieve the first entry.
Do While MyName <> ""   ' Start the loop.
      ' Use bitwise comparison to make sure MyName is a directory.
      If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
         ' Display entry only if it's a directory.
         i = i + 1
         Redim UserMaps(i)
         UserMaps(i) = MyName
         Debug.WriteLine(MyName)
      End If   
   MyName = Dir()   ' Get next entry.
Loop

[ Voor 7% gewijzigd door Verwijderd op 23-09-2003 23:27 . Reden: missing tag ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 18:33
apen-nootjes schreef op 23 September opnieuw zijn vraag die al lang beantwoord is
Misschien kun je beter even naar de antwoorden kijken die al gegeven zijn.

[ Voor 7% gewijzigd door farlane op 23-09-2003 23:35 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 18:33
curry684 schreef op 23 September 2003 @ 21:05:
Apennootjes beweert dat ie z'n probleem duidelijker kan omschrijven en we tot nu toe het verkeerde probleem hebben beantwoord, dus heropend :D
Zou je dan nog wel ff de topictitel willen aanpassen ? Staat zo ...... euhm .... raar. :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 20:03

johnwoo

3S-GTE

Nog even voor alle duidelijkheid een opmerking bij het recursief enumeraten van directories (is hier weliswaar niet het geval, maar lijkt er nogal op).

De Dir$ functie van VB6 houdt intern één FindFirstFile..FindNextFile enumeratie bij, en daardoor zal een regelrechte recursieve aanroep niet gaan werken: wanneer je een niveau lager de loop weer initaliseert voor die folder, ben je dus de enumeratie van je huidige folder kwijt. De oplossing is om per niveau eerst met Dir$ een kleine array (alleen voor die folder) te vullen, en die vervolgens recursief af te lopen.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • Apen-nootjes
  • Registratie: September 2001
  • Laatst online: 03-04-2025

Apen-nootjes

aka Apen-klootjes

Topicstarter
Ok, ik zal straks kijken of ik wat kan met dat stukje code hierboven..

Hier het mailtje wat ik naar curry gestuurd had:

Dus alle Directory's nalopen... (nouja..
> alle)
> ik heb alleen maar 1 level diep nodig... dus:
>
> c:\UserA
> c:\UserB
> c:\UserC
>
> Nu heb ik de naam van die map nodig.. dus ik wil een array krijgen waar
> hetvolgende in komt te staan:
>
> Dim map() As String
>
> map(1) = UserA
> map(2) = UserB
> map(3) = UserC
>
> Wat er dieper zit.. dus dat UserA een folder heeft die mydocuments heet
> intresseert me niet...
>
> Zou het topic opnieuw open mogen?? (Dan zal ik proberen het er wat
> duidelijker in te zetten..
>
> Alvast bedankt,
>
> Apen-nootjes
> Vincent Klop

Maakt het misschien allemaal nog iets duidelijker (of niet :o )

SmartDoDo: Ach, afhankelijk van je smaak kan het best een lekker geil ding zijn :P
You never had a date you couldn't inflate


  • Apen-nootjes
  • Registratie: September 2001
  • Laatst online: 03-04-2025

Apen-nootjes

aka Apen-klootjes

Topicstarter
sinaasappelsap tnks voor je code.. Dit was precies wat ik zocht tnks...

SmartDoDo: Ach, afhankelijk van je smaak kan het best een lekker geil ding zijn :P
You never had a date you couldn't inflate

Pagina: 1