Jump/GoTo in VBScript

Dieses Thema im Forum "Programmieren" wurde erstellt von DreamFlasher, 22. März 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. DreamFlasher

    DreamFlasher Byte

    Registriert seit:
    19. Februar 2002
    Beiträge:
    79
    Gibt es in VB Script nicht die Möglichkeit in eine Zeile zu springen?
     
  2. freeLookmode

    freeLookmode Byte

    Registriert seit:
    5. April 2002
    Beiträge:
    38
    Die Schleife wird wiederholt, solange wiederholen = true
    \'Das folgende brauche ich ja nicht zu erklären
    For zaehler = 1 To schritte
    nahe2 = (nahe1 + (wurzelaus / nahe1)) / 2
    MsgBox (zaehler & ".) " & nahe2)
    nahe1 = nahe2
    Next
     
  3. DreamFlasher

    DreamFlasher Byte

    Registriert seit:
    19. Februar 2002
    Beiträge:
    79
    das problem ist jetzt nur das ich es nicht mehr verstehe

    könntes du den code mal erklären?
     
  4. freeLookmode

    freeLookmode Byte

    Registriert seit:
    5. April 2002
    Beiträge:
    38
    3. Ich schätze, der Interpreter übersieht den Variablennamen einfach wie ein Kommentar.

    mal was anderes:
    Dein Code ergibt keinen Sinn.
    [Diese Nachricht wurde von freeLookmode am 05.04.2002 | 21:38 geändert.]

    jetzt habe ich den code mal umgeschrieben, der funktioniert und ist auch "sauberer", also ohne GoTo

    On Error Resume Next
    Dim wurzelaus, num, schritte, nahe1, nahe2, obenunten, a, b, wiederholen
    nahe1 = 1
    Do
    a = 2
    b = 2
    wiederholen = False
    wurzelaus = InputBox("Bitte geben Sie eine positive Zahl ein, aus der die Wurzel gezogen werden soll!", "Wurzel", "Zahl")
    obenunten = MsgBox("Sollen die oberen Näherungswerte berechnet werden? Mit Nein werden die Unteren berechnet.", 4, "obere oder untere Näherungswerte?")
    schritte = InputBox("bitte Anzahl der Schritte eingeben", "Näherungswerte", "Anzahl")

    num = IsNumeric(wurzelaus)
    If (num = True) Then a = 1
    If (wurzelaus < 0) Then b = 1
    If (a = 2) And (b = 2) Then MsgBox ("Sie haben keine Zahl eingegeben"): wiederholen = True
    If (a = 1) And (b = 1) Then MsgBox ("Sie haben eine negative Zahl eingegeben"): wiederholen = True
    Loop While wiederholen
    For zaehler = 1 To schritte
    nahe2 = (nahe1 + (wurzelaus / nahe1)) / 2
    MsgBox (zaehler & ".) " & nahe2)
    nahe1 = nahe2
    Next

    [Diese Nachricht wurde von freeLookmode am 05.04.2002 | 21:49 geändert.]
     
  5. DreamFlasher

    DreamFlasher Byte

    Registriert seit:
    19. Februar 2002
    Beiträge:
    79
    1. Es ist Sch...egal ob man das T groß oder klein schreibt (ebenso wie das G)

    2. Danke für den Hinweis aber das ist nichts Neues...

    3. natürlich hat das was mit zwischenspeichern (->Ram) zu tun weil da ja etwas "gemacht" wird (Aktion)

    4. nichts anderes sagte ich ja

    6. nein, du leider auch nicht, weil du nicht auf den Fehler eingegangen bist

    Then GoTo BisZumNaechstenMal
     
  6. freeLookmode

    freeLookmode Byte

    Registriert seit:
    5. April 2002
    Beiträge:
    38
    ich kenn mich mit vbScript zwar nicht so aus, aber vielleicht hilft es, wenn man GoTo Vorn schreibt (also mit großem T)

    2. Eine Msgbox darf Klammern haben, wenn:
    a = Msgbox ("blah", , "blah")
    a = msgbox ("balh")
    msgbox ("blah")
    msgbox ("blah"), , ("blah")
    eine Klammer um eine Variable übergibt keinen Pointer auf diese, sondern kopiert den Wert nocheinmal, belegt also mehr RAM

    3. mit Ram hat das eigentlich nichts zu tun, aber mit der Übersicht schon. Stell dir vor, du hast 10 For-Next Schleifen ineinander verschachtelt. dann musst du immer nach-oben-scrollen, wenn du wissen möchtest, welche Variable zu welchem Next gehört. Daher schreibe ich selbst die Variable immer noch hinter das Next.

    4. leerzeichen sind nur zur übersicht und zum trennen von Worten
    5. ...
    6. aber villeicht ich??

    das waren jetzt meine Kenntnisse in diesem Gebiet, freue mich aber, wenn ich eines Besseren belehrt werde.
     
  7. DreamFlasher

    DreamFlasher Byte

    Registriert seit:
    19. Februar 2002
    Beiträge:
    79
    1. Zeilennummer und Fehler habe ich vorher schon gesagt, aber meinetwegen:

    Zeile: 16 (IF (a=b) Then Goto Vorn)
    Zeichen: 15
    Fehler: Anweisung erwartet

    2. MsgBox DARF immer Klammern haben, aber in dem Fall MUSS es Nicht!

    3. Da ich die Variable zaehler im Übrigen Script nicht mehr brauche, sollte ich sie besser nicht angeben (Übersicht & Ram)

    4. Wenn Lehrzeichen zur Übersicht dienen sind sie nur nützlich und sinnvoll, da sie nichts an der Ausführung des Scripts ändern

    5. Der Fehler passiert überhaupt nicht da und außerdem s.h. 2

    6. Danke für deine Nachricht, aber du hast DEN Fehler nicht entdeckt

    THX und ciao

    Next
     
  8. User XP

    User XP Kbyte

    Registriert seit:
    22. November 2001
    Beiträge:
    144
    aber noch ein paar zusätzliche Fehler gefunden:

    --------------------------------------------------------------------
    If (a=b) Then MsgBox "Sie haben keine Zahl eingegeben"
    IF (a<>b) Then MsgBox "Sie haben eine negative Zahl eingegeben"

    Hier bin ich mir nicht ganz sicher: Msgbox dürfte in diesem Fall keine Klammern haben.
    --------------------------------------------------------------------

    For zaehler=1 to schritte
    nahe2=(nahe1+(wurzelaus/nahe1))/2
    MsgBox zaehler & ".) " & nahe2
    nahe1=nahe2
    Next zaehler

    -Bei der Next-Anweisung solltest du die Variable zaehler mit angeben.
    - In der 2. Zeile solltest du die Leerzeichen vor und nach dem + entfernen.
    -Die Msgbox-Anweisung darf hier keine Klammern haben. Diese Zeile löst den von dir beschriebenen Fehler aus.
    --------------------------------------------------------------------

    Ich hoffe ich hab\' alle Fehler entdeckt.

    CU, Richi
    [Diese Nachricht wurde von User XP am 05.04.2002 | 19:05 geändert.]
     
  9. DreamFlasher

    DreamFlasher Byte

    Registriert seit:
    19. Februar 2002
    Beiträge:
    79
    hi
    ich hab jetzt alles beachtet und ich schreib jetzt einfach mal meinen Code:

    ------------------------------------------------------------------------

    On Error Resume Next
    Dim wurzelaus, num, schritte, nahe1, nahe2, obenunten
    nahe1=1
    a=2
    b=2
    Vorn:
    wurzelaus=InputBox ("Bitte geben Sie eine positive Zahl ein, aus der die Wurzel gezogen werden soll!", "Wurzel", "Zahl")
    obenunten=MsgBox ("Sollen die oberen Näherungswerte berechnet werden? Mit Nein werden die Unteren berechnet.", 4, "obere oder untere Näherungswerte?")
    schritte=InputBox ("bitte Anzahl der Schritte eingeben", "Näherungswerte", "Anzahl")

    num=IsNumeric(wurzelaus)
    If (num=false) Then a=1
    If (wurzelaus<0) Then b=1
    If (a=b) Then MsgBox("Sie haben keine Zahl eingegeben")
    IF (a<>b) Then MsgBox("Sie haben eine negative Zahl eingegeben")
    IF (a=b) Then Goto Vorn
    IF (a<>b) Then Goto Vorn

    For zaehler=1 to schritte
    nahe2=(nahe1 + (wurzelaus/nahe1))/2
    MsgBox(zaehler & ".) " & nahe2)
    nahe1=nahe2
    Next

    ----------------------------------------------------------------------------

    Was ist daran falsch? es kommt immer noch: Anweisung erwartet.
    [Diese Nachricht wurde von DreamFlasher am 02.04.2002 | 10:58 geändert.]
     
  10. User XP

    User XP Kbyte

    Registriert seit:
    22. November 2001
    Beiträge:
    144
    Du hast in der Zeile 3 Fehler. Es muss heißen:

    If a=b then Goto Drei

    Drei:

    1)Wenn du das "="- Zeichen benutzt darf vor und danach kein Leerzeichen sein.

    2) Na gut, eigentlich kein Fehler, aber die Klammer ist in diesem Fall überflüssig, da du nur 2 Variablen vergleichst.

    3) Eine Sprungmarke muss mit einem Buchstaben anfangen und sollte auch jeden Fall mindestens 3 Zeichen lang sein.
     
  11. DreamFlasher

    DreamFlasher Byte

    Registriert seit:
    19. Februar 2002
    Beiträge:
    79
    und wie sieht die Syntax dazu aus?
    wenn ich nämlich:

    If (a = b) Then GoTo 3

    kommt der Fehler: Anweisung erwartet.
     
  12. User XP

    User XP Kbyte

    Registriert seit:
    22. November 2001
    Beiträge:
    144
    Ja, mit dem Goto-Befehl kannst du zu Marken springen (ähnlich wie bei BATCH-Dateien). Allerdings rate ich dir bei komplexeren Skripts davon ab, da leicht Fehler übersehen werden. Besser ist es wenn du Funktionen und Prozeduren erstellst.
     
  13. Superman

    Superman Kbyte

    Registriert seit:
    16. März 2001
    Beiträge:
    475
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen