Toon posts:

[vbScript] Probleem met eindigen loop

Pagina: 1
Acties:

Vraag


  • D3F
  • Registratie: Mei 2016
  • Laatst online: 04-03 18:22
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: 17:53
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: 04-03 18:22
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]


  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 15:29
[verwijderd]

[Voor 93% gewijzigd door Mar.tin op 28-07-2022 12:02]


  • D3F
  • Registratie: Mei 2016
  • Laatst online: 04-03 18:22
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!!!

  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 15:29
[verwijderd]

[Voor 96% gewijzigd door Mar.tin op 28-07-2022 12:02]


  • D3F
  • Registratie: Mei 2016
  • Laatst online: 04-03 18:22
Mar.tin 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: 30-03 13:20

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: 31-03 22:25
In vbscript kun je geen type meegeven bij Dim. Om de reden die @edeboeck noemt.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee