For Next Schleife mit Array

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

For Next Schleife mit Array

Beitrag 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:
Bild

:freak:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: For Next Schleife mit Array

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: For Next Schleife mit Array

Beitrag 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. :allright:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: For Next Schleife mit Array

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: For Next Schleife mit Array

Beitrag von rolaf »

RSBasic hat geschrieben:Na dann lets go: http://www.purebasic.fr/english/posting ... e=post&f=4
ich nixe englisch kann :lol: du maken?
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: For Next Schleife mit Array

Beitrag 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:

Code: Alles auswählen

For i.q = 1 To 100
   ;...   
Next
Das führt zu folgendem Fehler:
---------------------------
PureBasic
---------------------------
Zeile 1: 'For' unterstützt keine Quad-Variablen.
---------------------------
OK
---------------------------
Also warum sollte 'For' Arrays unterstützen? :mrgreen:
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
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: For Next Schleife mit Array

Beitrag von rolaf »

Wenigstens zeigt er bei deinen Beispiel ne anständige Fehlermeldung.
Ich hab erst mal blöde nach der Ursache suchen müßen. :wink:
Nino hat geschrieben:Also warum sollte 'For' Arrays unterstützen? :mrgreen:
Weils nett wäre und ich damit etwas optimieren hätte können. :mrgreen:
Zuletzt geändert von rolaf am 22.01.2012 17:38, insgesamt 1-mal geändert.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: For Next Schleife mit Array

Beitrag 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 :mrgreen: )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: For Next Schleife mit Array

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: For Next Schleife mit Array

Beitrag von ts-soft »

@NicTheQuick
Wenn Du schon hier liest, hättest Du die Bugs aber auch gleich melden können :wink:
Solange ich meine Lieblingsprogrammiersprache nicht pjurbesic sondern purebasic mit langem e ausspreche,
bin ich dafür nicht geeignet :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten