GLBasic forum

Other languages => GLBasic - de => Topic started by: Heiko on 2009-Mar-09

Title: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-09
Also ich hab vor mehrere while schleifen miteinander zu verknüpfen, also untereinander.
Bzw. einen Teil hab ich schon fertig.

Kann man aus dieser While Schleife (da kommt eine If bedingung) auch herausspringen, sodaß es nach dem Wend weitermacht?
Title: Re: Aus While Schleife springen?
Post by: WPShadow on 2009-Mar-09
BREAK? (vielleicht eine Lösung)
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-09
Ich glaub nicht wirklich.
Title: Re: Aus While Schleife springen?
Post by: amarliani on 2009-Mar-09
Dumme Idee: Wenn z.B.

WHILE i<10
...
WEND

dann i auf nen Wert über 10 setzen?
Title: Re: Aus While Schleife springen?
Post by: BumbleBee on 2009-Mar-09
Wenn der Ausdruck im Schleifenkopf nicht mehr zutrifft wird die Schleife verlassen und die nächste wird durchlaufen. Meinst du so?

Code (glbasic) Select


Loop=1 //Mit Schleife 1 anfangen

            //Loop 1     
WHILE Loop=1

   PRINT "Schleife 1 ",100,100
          //Und raus hier mit Taste A
  IF KEY(30) THEN Loop=2

SHOWSCREEN
WEND

            //Loop 2
WHILE Loop=2

  PRINT "Schleife 2 ",100,100
    //Und raus hier mit Taste S
  IF KEY(31) THEN Loop=3

SHOWSCREEN
WEND

          //Loop 3
WHILE Loop=3

  PRINT "Schleife 3 ",100,100
    //Und jetzt ganz raus :)
  IF KEY(32) THEN END

SHOWSCREEN
WEND


Oder hab ich dich missverstanden. Sry ist ja schon spät für mich. :)

Cheers
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-09
Im Schleifenkopf geht nicht....
So mein ich das.
Code (glbasic) Select
WHILE a<=variable

FOR i=0 TO 3
  "code"
NEXT

IF "irgendwas"
"nochirgendwas"

´Exit´-->hier rausspringen

ENDIF
a = a + 1
WEND

´weiter im Code´
Title: Re: Aus While Schleife springen?
Post by: Tiuz on 2009-Mar-09
in so einer verzwickten Situation ist ein 'GOTO endmarke:' schon gerechtfertigt, denke ich.
Auch wenn der Befehl an sich selbstverständlich böse bleibt ;)

Grüße, Tiuz



Title: Re: Aus While Schleife springen?
Post by: Kitty Hello on 2009-Mar-09
Jo. BREAK für eine Schleife. Goto für mehrere. Mach ich immer so. Oder ein "Jump_out_flag" setzen. Find ich aber doof.
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-09
Ich hatte Goto nur kurz in der Hilfe überflogen.
Und die Beschränkung gilt ja nur für Subs.

Also ist eine Funktion in der mehrere While...Wend vorkommen.
Und nur aus einer muss ich halt springen können.
Okay.Dann nehm ich GOTO.
Vielen Dank

dazu noch kurz ne FRage.
Sprungmarken werden aber vom restlichen code ignoriert, oder?
Also das Goto ist ja eine KANN Geschichte.
Es ist auch möglich, daß es die While Schleife normal beendet und dort vorbei muss.
Normal schon, ich weiß.....aber mein letztes Goto ist echt ewig her....
Title: Re: Aus While Schleife springen?
Post by: Schranz0r on 2009-Mar-09
Sobald du Goto aufrufst springst du zur Sprungmarke.
Frage einen Wert ab und pack das Goto in die Abfrage, dann hast du auch kein problem!
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-09
nein das meinte ich nicht.
in der function die ich hab, ist eben die while schleife dort wird in einer if abfrage mittels goto herausgesprungen.
ist die if bedingung allerdings nicht erfüllt, geht es weiter in der while schleife bis dessen bedingung nicht mehr erfüllt ist.
dann würde es ja nach wend weiter gehen.
und eben nach diesem wend steht meine sprungmarke.

also ich wollte nur wissen ob das
Code (glbasic) Select
sprungmarke: so auch noch beachtung findet, oder im normalen programmfluß keine rolle spielt.
aber das bekomm ich dann noch raus.



[edit] das gleiche habe ich jetzt auch bei einigen If bedingungen, so ein exit befehl wäre doch auch was, oder.

Title: Re: Aus While Schleife springen?
Post by: Schranz0r on 2009-Mar-09
wird einfach überlesen
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-10
nein ich hab das schon verstanden.
mach ne schleife dort zu beginn zum beispiel eine if bedingung mit goto am ende, was dann da raus springt.
das ist mir schon klar.

ich meinte, ob, wenn die bedingung nicht erfüllt wird, also kein goto erfolgt, sondern die while schleife normal beendet wird via while bedingung, dann das folgende goto irgendeine rolle spielt im normalen fluß.
aber ich glaub nicht.
ist nur ein fähnchen am rand, was angesprungen werden kann, von woauchimmer.

ich hab das schon kapiert.
Title: Re: Aus While Schleife springen?
Post by: Kitty Hello on 2009-Mar-10
FOR i=0 TO 10000
a:
b:
c:
d:
NEXT

die Labels oben haben keinen Einfluss auf die Performance.
Title: Re: Aus While Schleife springen?
Post by: peterpan on 2009-Mar-10

mit WHILE EXIT !
ach, haben wir ja nicht !
ganz vergessen.

Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-10
nur ein EXIT für While und For Schleifen..... wäre da sinnvoll.
Title: Re: Aus While Schleife springen?
Post by: Schranz0r on 2009-Mar-10
Quote from: peterpan on 2009-Mar-10

mit WHILE EXIT !
ach, haben wir ja nicht !
ganz vergessen.


Schwachsinn... und sinnlos!
Und mal wieder so ein sinnfreier post von dir... wird das jetzt zur Gewohnheit?
Hab schon lange keinen normalen Post mehr von dir gesehen, nurnoch so aufmüpfige Sachen...
Zukünftig lösche ich all diese ohne Angabe von Gründen!
Ausserdem, hättest du dich mal ein wenig mehr mit GLBasic beschäftigt, wüsstets du das BREAK eine While-Schleife unterbricht!

@ Heiko:

Wieso den, die erfüllt voll ihren Zweck sonst benutz BREAK !

Kleiner Test:

Code (glbasic) Select
WHILE TRUE

PRINT "Test",10,10
SHOWSCREEN
KEYWAIT
BREAK

WEND

WHILE TRUE

PRINT "Test2",10,10
SHOWSCREEN


WEND
END
Title: Re: Aus While Schleife springen?
Post by: Kitty Hello on 2009-Mar-10
Si, si! Correcte!
BREAK unterbrincht alle Schleifen. Ich rate Dir dringent dazu einfach mal im Handbuch zu schmökern.
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-10
Naja in der Hilfe steht zwar, daß Break eine Schleife unterbricht, aber nicht in welcher Form.
Und da im Zusammenhang steht auch gleich Continue, wo man vermuten könne, daß das total zusammenhängt.
War also nicht sofort ersichtlich, trotz lesen in der Hilfe.

also so wäre es also richtig, richtig?

Code (glbasic) Select
FUNCTION ImageInfo_ReadJPG:Buffer%, ImageFile%, ImageFileSize%
LOCAL i%, temp_j%, tempb%, tempa%, tempd%, tempf%, tempe%
LOCAL Pos = 0
LOCAL BType%


IsError = TRUE
WHILE Pos<=ImageFileSize-4
FILESEEK ImageFile, Pos, 1
FOR i=0 TO 3
       READBYTE ImageFile, temp_j
       POKEBYTE(Buffer, i, temp_j)
    NEXT
IF (PEEKBYTE(Buffer,0) = 0xFF) AND (PEEKBYTE(Buffer,1) = 0xD8) AND (PEEKBYTE(Buffer,2) = 0xFF) AND (PEEKBYTE(Buffer,3) = 0xE0)
IsError = FALSE
BREAK
ENDIF
Pos = Pos + 1
WEND

IF IsError THEN RETURN FALSE
READWORD ImageFile, tempb
Pos = FILEPOSITION(ImageFile) + Swap16(tempb)


IsError = TRUE
FILESEEK ImageFile, Pos, 1
WHILE  ENDOFFILE(ImageFile)=FALSE
  READBYTE ImageFile, tempa
IF tempa = 0xFF
READBYTE ImageFile, BType
READWORD ImageFile, tempb
Pos = FILEPOSITION(ImageFile) + Swap16(tempb)


IF (BType >= 0xC0) AND (BType <= 0xC3)
READBYTE ImageFile, i
READWORD ImageFile, tempd
ImageInfo_Height = Swap16(tempd)
READWORD ImageFile, tempf
ImageInfo_Width = Swap16(tempf)
READBYTE ImageFile, tempe
ImageInfo_Depth = tempe * 8
ImageInfo_Type = imgtype_JPEG
IsError = FALSE
BREAK
ENDIF


FILESEEK ImageFile, Pos, 1
ENDIF
WEND

RETURN 1-IsError

ENDFUNCTION
Title: Re: Aus While Schleife springen?
Post by: Schranz0r on 2009-Mar-10
Unterbricht die aktuelle FOR oder WHILE Schleife

Genauer kann man es ja garnicht mehr schreiben!
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-10
das war mir klar, aber was macht es nach der Unterbrechung?
BREAK=Pause, wartet irgendwo auf CONTINUE, whatever.....

Unterbricht die aktuelle FOR oder WHILE Schleife und führt den Code nach der jeweilig unterbrochenen Schleife fort.

Wäre einleuchtender.... ;/

Title: Re: Aus While Schleife springen?
Post by: Schranz0r on 2009-Mar-10
Aber ist doch logisch, wenn eine Schleife unterbrochen wird, wo gehts dann hin?
Bestimmt nicht am Programmstart :D

Sollte jeden Programmierer klar sein, das ein Programm von oben nach unten durchläuft... ausser du machst Spagetticode(GOTO) :D
Title: Re: Aus While Schleife springen?
Post by: Heiko on 2009-Mar-10
Hast ja Recht, ich hab wohl irgendwie das mit dem CONTINUE assoziert und zusammenhängend gesehen.....
War so eine Pause-Weiter-Überlegung....Egal, weiß es ja jetzt.