Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[vbScript] Probleem met eindigen loop

Pagina: 1
Acties:

Vraag


  • D3F
  • Registratie: mei 2016
  • Laatst online: 19-06 23:05
Mijn vraag
Hoi, momenteel ben ik begonnen met het oppakken van scripting, op dingetjes op het werk wat makkelijker te maken maar ook omdat ik het eigenlijk altijd al heb willen leren.

Momenteel ben ik begonnen met vbScript.

Ik loop tegen een probleem aan waarbij een loop blijft doorlopen.

Ik gebruik twee waardes, waarvan Dim Index begint op 0, en het script moet stoppen als Dim Index gelijk is aan Dim amount

Code voor de loop is:
<snip>
Loop While index < amount
Ik kan bevestigen dat de waarde van index oploopt, omdat ik eerder in de code en simpele text print waarin de Index oploopt, en geprint wordt wat de waarde van amount is.

Volgens mij is het probleem dat de code 'amount' leest als string, wat hij dus nooit gaat worden omdat index met een waarde van 1 verhoogd wordt, en daardoor nooit een string zal zijn.


Wat ik al gevonden of geprobeerd heb
Op internet heb ik al gekeken op diverse fora (ook verder dan pagina 1 en 2 op Google) maar overal waar ik kijk wordt een vaste waarde meegegeven waar index aan gespiegeld wordt, bijvoorbeeld: Loop while index < 10.

Omdat mijn script de gebruiker in staat stelt moet stellen om in een InputBox (amount) aan te geven hoe vaak het script moet loopen, is een vastgestelde waarde geen optie.

Wie kan mij uit de brand helpen, of mij in de juiste weg wijzen. ALles is welkom :)

Alvast bedankt!

Beste antwoord (via D3F op 19-09-2018 15:14)


  • Stoelpoot
  • Registratie: september 2012
  • Niet online
Netjes uitgewerkte vraag. Ik heb 2 tips waarvan ik denk dat ze je zullen helpen:

1. Je aanname kan je verifiëren met de TypeName() functie in VBScript. Gevonden door te zoeken: "VBScript get type"
2. Mits je aanname correct is, bevatten de meeste programmeer- en scripttalen een manier om variables te converteren naar andere types. Hiermee ga ik je geen linkje geven omdat ik niet zeker weet of de antwoorden zullen werken, maar zoek in dat soort gevallen naar "{taal} convert {sourceType} {destType}".

[Voor 4% gewijzigd door Stoelpoot op 19-09-2018 10:51]

Alle reacties


  • Killah_Priest
  • Registratie: augustus 2001
  • Laatst online: 02:29
Gaat dit om bv applicaties als Office te automatiseren of gaat het om Windows zaken automatiseren?
In het geval van Office : je zit eigenlijk vast aan vbscript.
Als het om Windows gaat : laat vbscript vallen en leer Powershell..

  • D3F
  • Registratie: mei 2016
  • Laatst online: 19-06 23:05
Het gaat in dit geval om het programma SecureCRT, wat wij gebruiken om Terminal sessies te emuleren.

Het ondersteund ook Python, en wellicht dat ik daar op korte termijn naar over wil schakelen omdat het een stuk flexibeler en beter toe te passen is. Voor nu ben ik geen die hard coder en wil ik het vooral erg simpel houden :)

Acties:
  • Beste antwoord
  • +1Henk 'm!

  • Stoelpoot
  • Registratie: september 2012
  • Niet online
Netjes uitgewerkte vraag. Ik heb 2 tips waarvan ik denk dat ze je zullen helpen:

1. Je aanname kan je verifiëren met de TypeName() functie in VBScript. Gevonden door te zoeken: "VBScript get type"
2. Mits je aanname correct is, bevatten de meeste programmeer- en scripttalen een manier om variables te converteren naar andere types. Hiermee ga ik je geen linkje geven omdat ik niet zeker weet of de antwoorden zullen werken, maar zoek in dat soort gevallen naar "{taal} convert {sourceType} {destType}".

[Voor 4% gewijzigd door Stoelpoot op 19-09-2018 10:51]


  • mvdam
  • Registratie: januari 2010
  • Laatst online: 11:11

mvdam

EV-Gekkie

Is het niet zo eenvoudig als Index amount even declareren als een Double of een integer?

code:
1
Dim Amount as Double

Privé: Leaf 2018 Béta MUXSAN 60kWh - Zakelijk: Tesla Model 3 LR AWD + Hyundai Kona 64kWh


  • D3F
  • Registratie: mei 2016
  • Laatst online: 19-06 23:05
Gevonden!

Door de amount om te bouwen van een variabele naar een integer is het gelukt om het script te laten stoppen. Dit kan met het commando CInt:

code:
1
2
3
4
5
6
7
Dim Amount
<snip>
Amount = InputBox("Getal: ")
<snip>
Amount = CInt(Amount)
<snip>
Loop While index < amount


Iedereen bedankt voor de hulp!!!

  • mvdam
  • Registratie: januari 2010
  • Laatst online: 11:11

mvdam

EV-Gekkie

D3F schreef op woensdag 19 september 2018 @ 15:13:
Gevonden!

Door de amount om te bouwen van een variabele naar een integer is het gelukt om het script te laten stoppen. Dit kan met het commando CInt:

code:
1
2
3
4
5
6
7
Dim Amount
<snip>
Amount = InputBox("Tekst: ")
<snip>
Amount = CInt(Amount)
<snip>
Loop While index < amount


Iedereen bedankt voor de hulp!!!
Uit mijn interesse, waarom niet:

code:
1
2
3
4
Dim Amount as integer
<snip>
Amount = InputBox("Tekst: ")
Loop While index < amount

Privé: Leaf 2018 Béta MUXSAN 60kWh - Zakelijk: Tesla Model 3 LR AWD + Hyundai Kona 64kWh


  • D3F
  • Registratie: mei 2016
  • Laatst online: 19-06 23:05
mvdam schreef op woensdag 19 september 2018 @ 15:15:
[...]


Uit mijn interesse, waarom niet:

code:
1
2
3
4
Dim Amount as integer
<snip>
Amount = InputBox("Tekst: ")
Loop While index < amount
Heb ik ook geprobeerd, maar dan krijg ik een foutcode terug:

Microsoft VBScript compilation error

Error: Expected end of statement
File: <pad naar script>
Line: 23

Dim amount as integer

  • edeboeck
  • Registratie: maart 2005
  • Laatst online: 11:33

edeboeck

mie noow noooothing ...

Die fout is op zich niet echt onlogisch: het gaat immers over VBScript en niet VB (.Net)... er is maar 1 datatype: Variant (bron)

  • Josk79
  • Registratie: september 2013
  • Laatst online: 00:37
In vbscript kun je geen type meegeven bij Dim. Om de reden die @edeboeck noemt.
Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True