Avatar billede barf Nybegynder
29. maj 2005 - 14:10 Der er 25 kommentarer og
1 løsning

for next loop - continue

Jeg har et lille vbscript spørgsmål.
I et for next loop, hvordan kan jeg springe et af loop'ene over?

I eksemplet nedenfor skal 'do stuff' ikke køres, hvis i lig med 5.

for i=0 to 10
  if i=5 then
    'continue
  end if
  'do stuff
next
Avatar billede keysersoze Guru
29. maj 2005 - 14:13 #1
for i = 0 to 10
  if not i = 5 then
    'do stuff
  end if
next
Avatar billede tubber Juniormester
29. maj 2005 - 14:20 #2
Eller:

for i=0 to 10
if i=5 then
  next
Else:
  'do stuff
  next
End If
Avatar billede tubber Juniormester
29. maj 2005 - 14:22 #3
Men er det kun ved 5 og ikke andre steder der skal ske noget andet end 'do stuff så er keysersoze's forslag det bedste.....
Det var bare den kunne kombineres anderledes så der blev flere muligheder
Avatar billede barf Nybegynder
29. maj 2005 - 14:23 #4
Ja, det er selvfølgelig en mulighed, men så vil jeg bare få noget redundant kode.
Findes der ikke en function i vbscript der svarer til continue?

Normalt (actionscript, javascript, php, jscript) ville jeg jo bare skrive:

for(i=0; i<10; i++){
  if(i==5){
    continue
  }
  //do stuff
}
Avatar billede tubber Juniormester
29. maj 2005 - 14:29 #5
for i = 0 to 10
  if i = 5 then
    next
  end if
'do stuff
next
Avatar billede tubber Juniormester
29. maj 2005 - 14:30 #6
Det er bare en omskrevet udgave af keysers :)
Avatar billede tubber Juniormester
29. maj 2005 - 14:31 #7
faktisk mage til dit forslag, syntaxen for continue er så bare next
Avatar billede barf Nybegynder
29. maj 2005 - 14:42 #8
tubber>> når jeg prøver at gøre det på din måde, får jeg en fejl der hedder: Uventet 'Next'
Avatar billede tubber Juniormester
29. maj 2005 - 15:10 #9
for i = 0 to 10
  if i = 5 then
    next
  end if
'do stuff
next

Det er nok den der der giver fejl, og det kan jeg egenligt godt se, for når den er = 5 kører den 2 next, så den vil ikke virke.....

så skal du ha begge next ind i if sætningen som den første jeg lavede....
Avatar billede tubber Juniormester
29. maj 2005 - 15:11 #10
Den korteste måde vil være den keyers kom med.....
Avatar billede barf Nybegynder
29. maj 2005 - 16:08 #11
Ok, så må jeg jo gøre det på den måde.
Vil i lægge nogle svar?
Avatar billede tubber Juniormester
29. maj 2005 - 17:03 #12
lad keys få dem :) han har den mest korekte løsning så længe det kun er enten eller :)
Avatar billede davidfossil Nybegynder
29. maj 2005 - 17:54 #13
Jeg vil så vove at påstå at man i VB ikke kan have flere next statements til samme for, hvorfor tubber's forslag kun kan give syntax fejl. Har du selv testet dem, eller er det bare mig der tager helt fejl? :)
Avatar billede tubber Juniormester
29. maj 2005 - 18:04 #14
davidfossil:

Problemet med den sidste den med if og ingen else: gør at der vil blive exekveret 2 next til en if.

Det første forslag:
for i=0 to 10
if i=5 then
  next
Else:
  'do stuff
  next
End If

Vil ALTID kun exekvere en next derfor bør den ikke melde fejl......
Avatar billede keysersoze Guru
29. maj 2005 - 18:05 #15
umiddelbart vil jeg mene det samme - altså at man kun kan have en next pr for-statement også selvom den ene next står inde i en if-sætning.

mig bekendt er der intet a la "continue" - kun en exit... men jeg kan selvfølgelig tage fejl.

i hvert fald kommer der lige et svar her
Avatar billede tubber Juniormester
29. maj 2005 - 18:10 #16
hmmmmm jeg ved det kan gøres med db recordsets.....

men har lige siddet og leget lidt med next tingen og fundet frem til den skal se sådan her ud.....

For i = 0 To 10
If i = 5 Then
Else:
    MsgBox i
End If
Next
Avatar billede keysersoze Guru
29. maj 2005 - 18:14 #17
der er ingen grund til en else hvis det kan undgås - derfor

for i = 0 to 10
  if not i = 5 then
    'do stuff
  end if
next
Avatar billede tubber Juniormester
29. maj 2005 - 18:17 #18
Det skriver jeg også længere oppe :)
Avatar billede keysersoze Guru
29. maj 2005 - 18:24 #19
hvorfor laver du den så 29/05-2005 18:10:53 :)
Avatar billede tubber Juniormester
29. maj 2005 - 18:49 #20
Fordi at kommer der et kreterie mere så kommer du ikke uden om den anden.....

f.eks.

For i = 0 to 100
If i = 5 then

elseif i = 25 then
  'Do some stuff
elseif i = 50
  'Do some other stuff
Else:
  'Do stuff
End If
Next
Avatar billede keysersoze Guru
29. maj 2005 - 18:57 #21
ja se det er jo korrekt - men det skrev du ikke 29/05-2005 18:10:53 ;)
Avatar billede tubber Juniormester
29. maj 2005 - 19:04 #22
nej men som spørger skriver så kender han andre sprog så gik ud fra han kunne regne vidre, men må da sige jeg blev lidt overrasket over man ikke kunne det med den next inde i en if, hvis den er strikket rigtigt sammen så vil den jo altid kun have en next i hvert gennemløb......
Avatar billede tubber Juniormester
29. maj 2005 - 19:05 #23
hov ser lige at jeg i min anden kommentar faktisk skriver at den kan have flere kreterier men hvis der ikke skal andre ind er din den bedste løsning :)
Avatar billede barf Nybegynder
29. maj 2005 - 19:07 #24
Godt i kan blive enige :)

Tak for hjælpen!
Avatar billede tubber Juniormester
29. maj 2005 - 20:15 #25
np du :)
Avatar billede tubber Juniormester
29. maj 2005 - 20:16 #26
Og takker til i andre for en god og lærerig og saglig samtale :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester