Seite 1 von 3
For Next Schleife mit Array
Verfasst: 22.01.2012 16:44
von rolaf
Hallo,
hat es einen Grund warum For Next Schleifen nicht mit Arrays genutzt werden können, den ich im Moment nicht sehe?
Code: Alles auswählen
Dim Reihe(1)
For Reihe(0) = 1 To 10
For Reihe(1) = 1 To 10
; hier passiert was
Next
Next
Ergebnis:

Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:12
von ts-soft
Ja, es werden nur einfache Variablen vom Typ Integer als Zähler unterstützt. Keine Arrays, keine Float usw.
Aber der Absturz des Compilers ist ein Bug.
Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:15
von rolaf
ts-soft hat geschrieben:Ja, es werden nur einfache Variablen vom Typ Integer als Zähler unterstützt. Keine Arrays, keine Float usw.
Aber der Absturz des Compilers ist ein Bug.
Aha, ok - also nix mit Arrays, Schade.
Dank dir für deine Auskunft.

Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:15
von RSBasic
Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:18
von rolaf
ich nixe englisch kann

du maken?
Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:27
von Nino
rolaf hat geschrieben:hat es einen Grund warum For Next Schleifen nicht mit Arrays genutzt werden können, den ich im Moment nicht sehe?
Code: Alles auswählen
Dim Reihe(1)
For Reihe(0) = 1 To 10
For Reihe(1) = 1 To 10
; hier passiert was
Next
Next
Es geht ja (zumindest mit PB 4.60 x86) nicht mal dies:
Das führt zu folgendem Fehler:
---------------------------
PureBasic
---------------------------
Zeile 1: 'For' unterstützt keine Quad-Variablen.
---------------------------
OK
---------------------------
Also warum sollte 'For' Arrays unterstützen?
PB-Hilfe hat geschrieben:Die For : Next Schleife arbeitet ausschließlich mit Ganzzahlen, sowohl bei den Ausdrücken als auch der Step Konstante.
Diese Aussage ist übrigens nicht richtig, denn 'i.q' ist eine Variable für ganze Zahlen, und der ihr hier initial zugewiesenen Wert 1
ist eine ganze Zahl.
Grüße, Nino
Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:33
von rolaf
Wenigstens zeigt er bei deinen Beispiel ne anständige Fehlermeldung.
Ich hab erst mal blöde nach der Ursache suchen müßen.
Nino hat geschrieben:Also warum sollte 'For' Arrays unterstützen?

Weils nett wäre und ich damit etwas optimieren hätte können.

Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:37
von ts-soft
Das sind ja schon 2 Bugs, einer in der Hilfe und einer im Compiler.
Wo sind die englishfreaks, bitte Meldung machen!
(Wir alten Herren sind da nicht so fit und schon lange aus der Schule

)
Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:47
von NicTheQuick
Als Workaround für Ganzzahlen und maximal Integer als Step-Wert schlage ich mal einfach das hier vor:
Code: Alles auswählen
Dim Reihe.i(1)
#MAX_RECURSION = 10
Macro ForEx(Var, startValue, endValue, stepValue = 1)
CompilerIf Defined(FOR_EX_STEP_VALUE, #PB_Array) = #False
Global Dim FOR_EX_STEP_VALUE.i(#MAX_RECURSION)
Global FOR_EX_STEP_VALUE_RECURSION = 0
CompilerEndIf
Var = startValue
FOR_EX_STEP_VALUE(FOR_EX_STEP_VALUE_RECURSION) = stepValue
FOR_EX_STEP_VALUE_RECURSION + 1
While (Var <= endValue)
EndMacro
Macro NextEx(Var)
Var + FOR_EX_STEP_VALUE(FOR_EX_STEP_VALUE_RECURSION - 1)
Wend
FOR_EX_STEP_VALUE_RECURSION - 1
EndMacro
ForEx(Reihe(0), 1, 10)
ForEx(Reihe(1), 1, 10)
Debug Str(Reihe(0)) + ", " + Str(Reihe(1))
NextEx(Reihe(1))
NextEx(Reihe(0))
Einziger Nachteil ist noch, dass man bei NextEx die Variable schreiben muss. Würde man sich auf einen Datentyp festlegen, könnte man das auch umgehen. Aber so können jetzt alle Datentypen außer String bedient werden. Als Stepvariable bleibt aber weiterhin Integer.
Re: For Next Schleife mit Array
Verfasst: 22.01.2012 17:50
von ts-soft
@NicTheQuick
Wenn Du schon hier liest, hättest Du die Bugs aber auch gleich melden können
Solange ich meine Lieblingsprogrammiersprache nicht pjurbesic sondern purebasic mit langem e ausspreche,
bin ich dafür nicht geeignet
