Mannix: In For-Schleife 2 Variablen hochzählen

Hallo zusammen,

ich würde gerne in einer For-Schleife 2 unterschiedliche Variablen in unterschiedlicher Schrittgröße hochzählen. In Java hab ich das schon mal gesehen, ungefähr so: for (i=0,j=0;i<10,j<20;i++,j+2). Geht das auch in VBScript?

Gruß Mannix

  1. ungefähr so: for (i=0,j=0;i<10,j<20;i++,j+2).

    ^          ^
    Ungefähr. Zwischen i<10 und j<20 sollte wohl ein logische Operation stehen: && oder ||. Und hinten willst du j einen neuen Wert zuweisen: j+=2 (oder j=j+2).

    Geht das auch in VBScript?

    Wieso nicht? Die eine ist deine Schleifenvariable, die zweite zählst du in der Schleife hoch. Brauchste nur noch evtl. innerhalb der Schleife eine Abbruchbedingung, wenn sich die Variablen unabhängig voneinander ändern können und die zweite Variable ihre Abbruchbedingung zuerst erreichen sollet.

    Gunnar

    --
    "Nobody wins unless everybody wins." (Bruce Springsteen)
    1. Geht das auch in VBScript?

      Wieso nicht? Die eine ist deine Schleifenvariable, die zweite zählst du in der Schleife hoch. Brauchste nur noch evtl. innerhalb der Schleife eine Abbruchbedingung, wenn sich die Variablen unabhängig voneinander ändern können und die zweite Variable ihre Abbruchbedingung zuerst erreichen sollet.

      Gunnar

      Und wie sieht das dann in VBScript aus? Die Syntax ist mir nicht klar.

      1. Und wie sieht das dann in VBScript aus? Die Syntax ist mir nicht klar.

        Mir auch nicht ohne Nachzulesen. Ich bin mir auch nicht sicher, ob es exit in VB gibt.

        Und Franks Lösung https://forum.selfhtml.org/?t=90791&m=544967 ist sauberer.

        Wenn sich deine Variablen allerdings wie in deinem Beispiel gemeinsam ändern, reicht eine Abbruchbedingung aus:
            for (i=0, j=0; i<10; i++, j+=2)

        Das geht dann auch in VB mit einer for-Schleife:

        j=0
        for i=0 to 9
        '  Anweisungen
           j=j+2
        next i

        Gunnar

        --
        "Nobody wins unless everybody wins." (Bruce Springsteen)
  2. Hallo Mannix,

    ich würde gerne in einer For-Schleife 2 unterschiedliche Variablen in unterschiedlicher Schrittgröße hochzählen. In Java hab ich das schon mal gesehen, ungefähr so: for (i=0,j=0;i<10,j<20;i++,j+2). Geht das auch in VBScript?

    Die Syntax, siehe (bewußt kein anklickbarer Link [1])

    http://msdn.microsoft.com/library/default.asp?url=/Flibrary/en-us/Fscript56/html/vsstmfor.asp

    von 'for' scheint es nicht zu unterstützen. Du musst es also händig tun, wie Gunnar es in https://forum.selfhtml.org/?t=90791&m=544931 beschreibt.

    Freundliche Grüsse,

    Vinzenz

    [1] Mir ist auch nach Lektüre von http://forum.de.selfhtml.org/archiv/2003/2/37011/#m202958 nicht klar geworden, wie ich anklickbare und dennoch funktionierende Links auf die MSDN setzen kann :-(

    1. Hallo Vinzenz.

      [1] Mir ist auch nach Lektüre von http://forum.de.selfhtml.org/archiv/2003/2/37011/#m202958 nicht klar geworden, wie ich anklickbare und dennoch funktionierende Links auf die MSDN setzen kann :-(

      Bitte schön:
      http://msdn.microsoft.com/library/en-us/script56/html/vsstmfor.asp

      Hint 1:
      1. Rechtsklick im Inhaltsframe auf das gewünschte Thema
      2. "Verknüpfung kopieren" auswählen
      3. In ein <> einfügen

      Disclaimer:
      Wer das MSDN mit einem anderen Browser als dem IE besucht, ist entweder Masochist oder selber schuld oder beides ;)

      Freundschaft!
      Siechfred

      --
      Nichts ist schwerer einzureißen als die Mauer in den Köpfen.
      1. Danke, Siechfred!

        1. Rechtsklick im Inhaltsframe auf das gewünschte Thema

        Da hätte ich selbst drauf kommen müssen :-(

        1. "Verknüpfung kopieren" auswählen
        2. In ein <> einfügen

        Wer das MSDN mit einem anderen Browser als dem IE besucht, ist entweder Masochist oder selber schuld oder beides ;)

        Das ist einer der wenigen Fälle, für die ich den IE verwende :-)

        Freundliche Grüsse,

        Vinzenz

  3. Hi,

    vielleicht nicht unbedingt mithilfe von <for> da die VB Syntax nicht
    passt. Aber du könntest das mit einer anderen _Schleife_ machen:

    dim i, j
    i = 0
    j = 0
    do while (i<10) AND (j<20)
      i = i + 1
      j = j + 2
      '...
    loop

    Ciao, Frank

  4. Vielen Dank Leute, hab es jetzt mit ner "do while"-Schleife gemacht (danke Frank). Hätte ich auch selbst drauf kommen können