Aus While Schleife springen?

Previous topic - Next topic

Heiko

#15
nur ein EXIT für While und For Schleifen..... wäre da sinnvoll.

Schranz0r

#16
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
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

Si, si! Correcte!
BREAK unterbrincht alle Schleifen. Ich rate Dir dringent dazu einfach mal im Handbuch zu schmökern.

Heiko

#18
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

Schranz0r

Unterbricht die aktuelle FOR oder WHILE Schleife

Genauer kann man es ja garnicht mehr schreiben!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Heiko

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.... ;/


Schranz0r

#21
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
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Heiko

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.