Seite 1 von 2
For To Step
Verfasst: 09.10.2006 01:23
von Peloka
Da hab ich doch mal ne bloede Frage.
Warum funktioniert folgender Code nicht ?
Code: Alles auswählen
line2 = 387
...
linedist1 =21
For i =line2 To 690 Step linedist1
...
Next i
21 ist ja wohl 'ne Zahl oder was meckert der Rechner
Pb3.94
Verfasst: 09.10.2006 01:26
von STARGÅTE
Nach STEP muss immer eine KONSTANTE stehen (#Zahl)
Verfasst: 09.10.2006 01:32
von Peloka
Mit der Konstante geht's
warum aber nicht mit der Variabel
Verfasst: 09.10.2006 01:38
von STARGÅTE
Das ist glaube ich eine sicherheitsfrage ^^
Was soll PB machen wenn du die Varialble änderst Z.B.
ändert dann PB automatisch das Step? k.A.
Konstanten deshalb weil ja normalerweise immer Zahlen dahinter stehen.
Wenn du wirklich das Step wärend des durchlaufes verändern willst dann nimm lieber 2 For To schleifen oder einer 2 Schleifen in einander.
Was willst du denn machen ?
Verfasst: 09.10.2006 03:16
von #NULL
schleifen mit variablem schritt kannst du auch mit while umsetzten:
Verfasst: 09.10.2006 03:57
von Kaeru Gaman
eine for-next schleife ist die rudimentärste schleife von allen.
eigentlich widerspricht es dem wesen des "nächsten in einer reihe",
wenn die abstände variabel sein könnten.
aber wie #NULL schon sagte, es wird auch garnicht benötigt,
man kann while-wend nehmen, oder repeat-until
Code: Alles auswählen
; For var = START To ENDE Step DIST
var = START
Repeat
;...
var + DIST
Until var > ENDE
Verfasst: 09.10.2006 05:11
von STARGÅTE
ich würde es lieber Kopfgesteuert machen weil du sonst bei START=1 und ENDE=0 einen Durchlauf hast, was bei FOR TO nicht ist ,also:
Code: Alles auswählen
; For var = START To ENDE Step DIST
var = START
While var <= ENDE
;...
var + DIST
Wend
Verfasst: 09.10.2006 07:44
von #NULL
mal davon abgesehen, dass man ja auch in einer for-next schleife den zaehler, und damit den step beeinflussen kann:
Code: Alles auswählen
stp=2
For i=0 To 1000
Debug "i="+Str(i)+" stp="+Str(stp)
i-1+stp
stp*2
Next
..was äußerst hässlich ist,
kannst du dir den step auch in jedem durchgang selbst ableiten:
Code: Alles auswählen
max=100
stp=5
For i=0 To max/stp
Debug i*stp
Next
Debug ""
stp=10
For i=0 To max/stp
Debug i*stp
Next
den step während der schleife zu ändern ist ja seltener nötig, aber manchmal will man den step für die schleife eben zu laufzeit festlegen.
Verfasst: 09.10.2006 10:37
von Peloka
Problem scheinbar erkannt.
Da die Variabel geändert in der Schlaufe werden kann verbietet Pb dies.
Andere Basic's interpretieren das anders.
Dort wird der Step-wert erst zu beginn der Schlaufe ausgelesen und bis zum Ende der Schlaufe beibehalten.
Da Pb den Step-wert scheinbar aus dem Speicher direkt holt, kann man theoretisch den Speicherort lokalisieren, dort den Wert ändern und erhält so eine Schleife mit unterschiedlicher Stepgröße.
Das ist ja wohl auch nicht im Sinne des Erfinders, aber auch nicht mein Problem.
Ich löse die Aufgabe also mit WHILE oder UNTIL.
Verfasst: 09.10.2006 12:07
von NicTheQuick
Zwar ein bisschen langsamer, aber einfacher handzuhaben:
Code: Alles auswählen
Macro For_(Var, Start, Ende, Steps)
Var = Start - Steps
While Var + Steps < Ende
Var + Steps
EndMacro
Macro Next_()
Wend
EndMacro
For_(a, 1, 100, b)
Debug a
b + 1
Next_()