[VBS]Ongedefinieerde Array

Pagina: 1
Acties:

  • WaSteiL
  • Registratie: Juli 2003
  • Laatst online: 09:02
Ik heb een script wat mappen controleert. Indien een map voldoet aan een voorwaarde (in dit geval dat er geen gebruiker meer van bestaat in de AD) gaat hij de rechten resetten.

Nu werkt dat op zich perfect. Je moet er als gebruiker bij het script alleen constant bij aanwezig zijn omdat het vraagt om bevestiging van het resetten van de rechten. Ik wil het zo veranderen dat het script alle mappen doorloopt. Alle "foute" mappen in een array gooit zodat ik daarna met de waarde uit het array aan de gang kan gaan. Vanaf dat moment hoef je er als gebruiker niet meer bij te zijn.

Ik loop alleen tegen het probleem aan dat ik van te voren niet weet uit hoeveel waardes de array gaat bestaan. Nu ken ik daar meerdere mogelijkheden voor:
  1. Loop tweemaal laten lopen. Eerste maal laten lopen om te tellen hoeveel "foute" mappen er zijn. Daarna de Array te definieren met de getelde waarde om de array te gaan vullen.
  2. Array definieren met een waarde die vele malen hoger ligt dan de max waarde die je denkt te gaan halen. Stoppen met uiltezen op het moment dat je lege waarde treft.
Nu vind ik dat beide niet echt mooie oplossingen vanwege:
  1. Script duurt onnodig lang aangezien het 1 keer alleen maar loopt om te tellen. Doorlopen van de mappen duurt sowieso al lang aangezien het een hoop mappen kunnen zijn.
  2. Komt in mijn ogen over als 500 MB aan geheugen reserveren terwijl je maar 1 MB nodig hebt.
Ik kan eigenlijk nergens vinden of je m.b.v. VBS nu een ongedefinieerde array kan gebruiken. Ik weet dat je met ReDim opnieuw een array kan defnieren en gebruiken, maar dan verlies je de waardes uit de array die reeds geplaatst zijn.

Loop ik hier tegen een limitatie aan van VBS of zal ik gewoon optie 1 moeten gebruiken in de vorm van script tweemaal laten lopen?

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Volgens mij kan dat in VBS idd niet, weet tenminste van me ASP tijd nog dat dit niet mogelijk was.....

Wat je eventueel wel kunt doen is het volgende: alles in een string zetten met een seperator en dan een split doen, dan staat het ook in een Array.

[ Voor 42% gewijzigd door raptorix op 05-04-2007 16:19 ]


  • Sjoerd
  • Registratie: December 2003
  • Niet online
en redim preserve? :) in vb.net werkt het zo tenminste dan behoud je de waardes

Modelbouw - Alles over modelbouw, van RC tot diorama


Verwijderd

code:
1
REDIM PRESERVE MYARRAY(X)


En dan zou ik niet iedere keer 'redimmen' maar redimmen per 100 ofzo,
teller bijhouden en op het eind redimmen naar die tellerwaarde.
(redimmen kost meestal nogal wat "tijd")

[ Voor 70% gewijzigd door Verwijderd op 05-04-2007 16:28 ]


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 01-12 17:00

pistole

Frutter

Kan je niet beter een collection of een dictionary (oid) gebruiken?

Ik frut, dus ik epibreer


  • WaSteiL
  • Registratie: Juli 2003
  • Laatst online: 09:02
raptorix schreef op donderdag 05 april 2007 @ 16:19:
Volgens mij kan dat in VBS idd niet, weet tenminste van me ASP tijd nog dat dit niet mogelijk was.....

Wat je eventueel wel kunt doen is het volgende: alles in een string zetten met een seperator en dan een split doen, dan staat het ook in een Array.
Dit is idd een oplossing. Ondertussen ook al werkend.
Even kijken naar de andere oplossingen om te kijken wat de oplossing is die het beste past in mijn script. :D
pistole schreef op donderdag 05 april 2007 @ 16:30:
Kan je niet beter een collection of een dictionary (oid) gebruiken?
Dit werkt nog beter dan de strings. Eigenlijk is dit hetgeen wat ik zocht. _/-\o_
Ik heb nu gebruik gemaakt van Dictionary. Super simpel zelfs.
Dat is het probleem als je je blind staart op die array.

[ Voor 26% gewijzigd door WaSteiL op 05-04-2007 17:11 ]

Pagina: 1