Hvad gør et program, hvis det møder en Loop, uden at have mødt den tilhørende Do?
Eksempel:
Do Until rsl.EOF .. kode,kode Label1: .. kode,kode Loop
Hvis der så bliver GoTo til Label1:, vil Loop så finde sin tilhørende Do og fortsætte løkken, så hvis den var blevet på \"autoriseret\" vis?
Jeg vil lige sige, at det ikke er mig, der har fundet på denne latterlige GoTo-konstruktion, som selvfølgelig skriger til himlen, men det sker jo, at man skal rette i andre folks programmer. :-(
Jo, det går fint. Programmet virker udmærket, men da jeg ikke kan debugge det, kan jeg ikke finde ud af hvorfor det egentlig virker (og dermed heller ikke ændre funktionaliteten).
Det kan godt lade sig gøre, men du skal bruge løkkerne med lidt omhu! Det virker ikke hvis du bruger \"until\", men \"while\" ser ud til at virke. Hvis du bruger else i stedet elseif er der også problemer med at den går ind i begge løkker.
Jeg har lavet et eksempel hvor det godt kan lade sig gøre at hoppe direkte til de forskellige labels.
Prøv det og se om det dur for dig!
Private Sub Command1_Click() Dim i As Integer MsgBox \"starter løkken\"
Do While i < 10
i = i + 1
If i < 3 Then GoTo label1 ElseIf i > 2 Then GoTo label2
End If
label1: MsgBox \" indenfor label1, i= \" & i
label2: i = i + 2 MsgBox \"indenfor label2, i= \" & i
Hmm.. Spøjst. Det program, jeg har her, bruger faktisk netop Until, og det ser som nævnt ud til at virke. Ydermere springes der endda til labelen fra et sted uden for løkken (det er noget rigtigt griseri!). Svaret, jeg søgte, fandt jeg i MSDN: Loop betyder slet og ret: Gå tilbage til foregående Do, og test konditionen. Man fortsætter altså som om intet var hændt, selvom man hopper ind midt i det hele.
Synes godt om
Ny brugerNybegynder
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.