12. februar 2004 - 15:01Der er
9 kommentarer og 1 løsning
Goto label i VBScript
Nu spørger jeg lige dumt...
Er det slet ikek muligt at lave en ganske harmløs, lillebitte, gammeldags goto i VBScript? Følgende _burde_ virke... Men det gør det ikke. Jeg føler mig godt nok ikke som den svedigste navle i saunaen lige nu :o(
Jeg er klar over, at den 5250 Emulator fra IBM jeg benytter, måske ikke er den nyeste, men ifølge hjælpen skulle det være muligt...
GOTO Gå til adresse (label). Format 1: GOTO adresse1 Format 2: GOTO adresse2 ON ERROR Format 3: GOTO adresse3 ON TIMEOUT
Bemærkning 1: ON ERROR og ON TIMEOUT defineres af kommandoerne RUN, SEND eller RECEIVE eller af en Wait-betingelse, der står før GOTO-kommandoen. Bemærkning 2: Hvis du bruger GOTO og LABEL til at oprette en løkke, bliver resultatet uforudsigeligt, hvis løkken udføres mange gange, dvs. mere 1.000 gange.
LABEL En adresse, der refereres til af en GOTO-kommando.
Goto har aldrig været til pænt brug, man hamler som oftest ud i noget spagheti kode, det er nok grunden til den er fjernet. (nogen mener også at det er tale om en religionskrig, måske derfor den er med i VB.Net)
Det er klart :o) Men til en makro er det ikke særlig egnet. Forestil dig at du har et skærmbillede du læser data fra. Hvis så det ene felt indeholder 'S' skal du udføre handling 1 og derefter starte forfra. Hvis feltet derimod indeholder 'P' eller 'N' skal du udføre handling 2, 3 og 4 men ikke handling 1. Derefter trykkes 'PAGE DOWN' og skærmbilledet skifter og proceduren starter forfra.
Jeg KAN løse det ved at skifte emulator og køre det hele via SENDKEYS fra Excel, men denne løsning har ikke et tilstrækkeligt højt sikkerhedsniveau. :o(
Hvad med Select Case: <script type="text/vbscript"> d=weekday(date)
select case d case 1 document.write("Søndag") case 2 document.write("Mandag igen!") case 3 document.write("Bare Tirsdag") case 4 document.write("Onsdag!") case 5 document.write("Torsdag...") case 6 document.write("Endelig Fredag!") case else document.write("Super lørdag!!!!") end select </script>
Eller
<script type="text/vbscript"> function greeting() strBog=ucase(*BOGSTAV*) If strBog = "S" then iAntal_S=iAntal_S+1 msgbox("antal s: " & iAntal_S) elseif strBog = "P" then iAntal_P=iAntal_P+1 msgbox("antal p: " & iAntal_P) elseif strBog = "N" then iAntal_N=iAntal_N+1 msgbox("antal n: " & iAntal_N) else msgbox("None!") end if
end function </script>
I begge tilfælde ville jeg lægge funktionerne ind der skal køres, så de blot blev kaldt, hvis et bogstav så krævede flere funktioner, så blot kalde dem efter hinanden.
Ville en genstart ikke resultere i at den hele tiden ville tælle P op?
Jeg har selv overvejet Select Case, men den kan man jo heller ikke køre flere gange. Der er åbenbart ikke nogen nem løsning. Jeg må se om jeg kan snyde.
Måske kan jeg løse det ved hjælp af nogle indviklede Do...Loop. Det bliver bare hurtigt endnu mere uoverskueligt end med Goto...
- Mikker
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.