1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Jump/GoTo in VBScript

Discussion in 'Programmieren' started by DreamFlasher, Mar 22, 2002.

Thread Status:
Not open for further replies.
  1. Gibt es in VB Script nicht die Möglichkeit in eine Zeile zu springen?
     
  2. 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. das problem ist jetzt nur das ich es nicht mehr verstehe

    könntes du den code mal erklären?
     
  4. 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. 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. 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. 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

    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. 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

    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. 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

    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

Thread Status:
Not open for further replies.

Share This Page