Seite 1 von 2

'For' nicht mit indizierter Variable möglich

Verfasst: 29.01.2010 02:13
von 7x7
PB 4.40

Code: Alles auswählen

Dim a(10)

For a(10)=1 To 20
    Debug a(1)
Next a(10)
Dieser Code crasht.

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 29.01.2010 02:47
von STARGÅTE
Es sollte auch nicht möglich sein,
hier fehlt halt die Fehlermeldung wie es bei Strukturen kommt:

Code: Alles auswählen

a.Point
For a\x = 1 To 20
 For a\y = 1 To 20
 
 Next 
Next
---------------------------
PureBasic
---------------------------
Zeile 2: For/Next akzeptiert nur nicht-strukturierte Variablen als Zähler.
---------------------------
OK
---------------------------
Die frage ist hier ob es sinnvoll wäre oder möglich sowas zuzulassen ...

Sowas lohnt ja nur wenn man sehr tiefe (verschachtelte) Schleifen hat, und dort nicht jeden Index definieren will.

Klar ist, das es hier eine eindeutige Fehlermeldung geben sollte wie bei Strukturen, und der Compiler nicht einfach crasht.

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 29.01.2010 08:44
von DrShrek

Code: Alles auswählen

Dim a(10)

For a(10)=1 To 20
    Debug a(1)
Next a(10)

Code: Alles auswählen

a.Point
For a\x = 1 To 20
For a\y = 1 To 20

Next 
Next
Fehlermeldung ist sicherlich nicht verkehrt.
Mich würde aber auch interessieren warum Ihr das so wie in Euren Beispielcodes machen wollt.
Was bezweckt Ihr damit?

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 29.01.2010 10:02
von 7x7
STARGÅTE: Die frage ist hier ob es sinnvoll wäre...
Die Frage nach dem Sinn begleitet uns das ganze Leben :mrgreen:

STARGÅTE: ...oder möglich sowas zuzulassen
Ob der in PB intern verwendete Pointer auf eine normale oder indizierte Variable zeigt, ist doch gehüpft wie gesprungen. Ich sehe da keine Probleme. Auch nicht bei Strukturen. Aber ich lasse mich gerne belehren

Dr. Shrek: Mich würde aber auch interessieren warum Ihr das so wie in Euren Beispielcodes machen wollt
STARGÅTE hat schon ein Beispiel genannt: "wenn man sehr tiefe (verschachtelte) Schleifen hat, und dort nicht jeden Index definieren will"

Ich wollte dies machen:

Code: Alles auswählen

For Idx=0 To MDev
    For z(Idx)=0 To 99
	  ;
	  ; macht irgend was
	  ;
    Next z(Idx)
Next Idx
Geht nur über Sekundärvariablen.

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 29.01.2010 14:19
von DrShrek

Code: Alles auswählen

For Idx=0 To MDev
    For z(Idx)=0 To 99
     ;
     ; macht irgend was
     ;
    Next z(Idx)
Next Idx
Das Du so etwas machen wolltest ist mir schon klar.
Aber was bringts?
Bzw zeig doch mal den OrginalSource der für das hier steht:

Code: Alles auswählen

     ;
     ; macht irgend was
     ;
Übrigends wenn Du es so macht dann gehts (bzw das ist der Code der das gleich macht wie Deine For Schleife):

Code: Alles auswählen

For Idx=0 To MDev
    For Idy=0 To 99
      z(Idx)=Idy
     ;
     ; macht irgend was
     ;
    Next Idy
Next Idx

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 30.01.2010 11:20
von 7x7
Dr. Shrek hat geschrieben:Übrigends wenn Du es so macht dann gehts (bzw das ist der Code der das gleich macht wie Deine For Schleife):

Code: Alles auswählen

For Idx=0 To MDev
    For Idy=0 To 99
      z(Idx)=Idy
     ;
     ; macht irgend was
     ;
    Next Idy
Next Idx
7x7 hat geschrieben:Geht nur über Sekundärvariablen.

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 30.01.2010 11:33
von Little John
Dr. Shrek hat geschrieben:Das Du so etwas machen wolltest ist mir schon klar.
Aber was bringts?
Dem schließe ich mich an.

Gruß, Little John

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 30.01.2010 11:56
von NicknameFJ
Little John hat geschrieben:
Dr. Shrek hat geschrieben:Das Du so etwas machen wolltest ist mir schon klar.
Aber was bringts?
Dem schließe ich mich an.

Gruß, Little John

7x7 hat ja kein Problem mit dem Code, in dem Sinne dass er nicht weiß wie er sein programmiertechnisches Problem lösen soll. Es geht ihm auch nicht darum ob seine Lösung sinnvoll ist oder nicht.

Fakt ist, wie Stargate bereits anmerkte, dass der Compiler bei dem gezeigten Code nicht einfach abstürzen darf.

Grüße

NicknameFJ

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 30.01.2010 12:10
von Little John
NicknameFJ hat geschrieben:Fakt ist, wie Stargate bereits anmerkte, dass der Compiler bei dem gezeigten Code nicht einfach abstürzen darf.
Das sehe ich auch so.

Unabhängig davon äußerte ich, dass ich ebenso wie Dr. Shrek nicht verstehe, welchen Vorteil 'For' mit einer indizierten Variable bringen soll.

Re: 'For' nicht mit indizierter Variable möglich

Verfasst: 30.01.2010 13:37
von Josh
Little John hat geschrieben:Unabhängig davon äußerte ich, dass ich ebenso wie Dr. Shrek nicht verstehe, welchen Vorteil 'For' mit einer indizierten Variable bringen soll.
was es bringen sooll, hast du dir eigentlich schon selbst beantwortet:
Dr. Shrek hat geschrieben:

Code: Alles auswählen

For Idx=0 To MDev
    For z(Idx)=0 To 99
     ;
     ; macht irgend was
     ;
    Next z(Idx)
Next Idx
Übrigends wenn Du es so macht dann gehts (bzw das ist der Code der das gleich macht wie Deine For Schleife):

Code: Alles auswählen

For Idx=0 To MDev
    For Idy=0 To 99
      z(Idx)=Idy
     ;
     ; macht irgend was
     ;
    Next Idy
Next Idx
eine zeile weniger und wenn es den code auch nur ein kleinstes bischen übersichtlicher macht, kann es nicht schaden. ich bin auch nicht der meinung, dass es jetzt mit aller gewalt in pb eingebaut werden muss, aber wenn es unter umständen wirklich so einfach ist,
7x7 hat geschrieben:Ob der in PB intern verwendete Pointer auf eine normale oder indizierte Variable zeigt, ist doch gehüpft wie gesprungen. Ich sehe da keine Probleme. Auch nicht bei Strukturen. Aber ich lasse mich gerne belehren
dann sehe ich auch keinen grund, warum es nicht als alternativvorschlag zu der fehlenden fehlermeldung gemacht werden sollte. wenn ich mir den aufwand einer fehlermeldung in mehreren sprachen vorstelle, dann kann das zulassen dieser funktion sogar weniger arbeit sein.