GLBasic forum

Other languages => GLBasic - de => Topic started by: Vampire on 2006-Dec-27

Title: If Then Else
Post by: Vampire on 2006-Dec-27
warum funzt diese simple kleine routine nicht?
der sound wird nicht gespielt, alles andere klappt.
der compiler beklagt sich nicht.
ich dreh noch durch...:(

Code (glbasic) Select
LOADFONT "Digital Readout.bmp",1
LOADSOUND "motor.wav",0, 1

SETSCREEN 640, 480, 1
SETFONT 1

PRINT "Motor = F1", 100, 100
GOSUB motor
SHOWSCREEN
MOUSEWAIT
// ------------------------------------------------------------- //
// -=#  MOTOR  #=-
// ------------------------------------------------------------- //
SUB motor:

IF KEY (59) = 1
PLAYSOUND (0, 0, 1)
ENDIF
RETURN

ENDSUB // MOTOR
Title: If Then Else
Post by: Kitty Hello on 2006-Dec-27
Weil Du nicht so schnell F1 drücken kannst, wie er schon im MOUSEWAIT hängt ;)
Title: If Then Else
Post by: Vampire on 2006-Dec-27
dann muss ich also ne schleife bauen, damit die abfrage immer wieder durchlaufen wird?
Title: If Then Else
Post by: BumbleBee on 2006-Dec-27
Code (glbasic) Select
WHILE TRUE
 PRINT "Motor = F1", 100, 100
 GOSUB motor
 SHOWSCREEN
WEND

  und hier dann die SUB :)
oder mit GOTO (Wird aber sehr unübersichtlich)

Cheers
Title: If Then Else
Post by: Vampire on 2006-Dec-27
danke dir, aber das habe ich natürlich schon versucht und hatte cpu auslastung von 100%.
nusste nen neustart machen, um aus der schleife rauszukommen.
weiss nich, sowas ist mir in den letzten 20 jahren nicht mehr passiert...
Title: If Then Else
Post by: Vampire on 2006-Dec-27
jetzt klappt es, ich muss noch irgendwas anderes mit in der schleife gehabt haben.
keine ahnung, bin sowieso fertig für heute :D

danke dir nochmal, bumblebee ;)
Title: If Then Else
Post by: BumbleBee on 2006-Dec-27
Gern geschehen ;)
Quote from: Vampireich muss noch irgendwas anderes mit in der schleife gehabt haben
Passiert mir ständig, dass ich irgendwo was übersehe oder vergesse.
Mit GOTO geht's ja auch. Aber das weißt du ja eh selber.
Code (glbasic) Select
motor:
 PRINT "Motor = F1", 100, 100
  IF KEY (59) = 1
   PLAYSOUND (0, 0, 1)
  ENDIF
 SHOWSCREEN
GOTO motor
So wird das Programm ja auch immer wieder abgearbeitet. Wie bei 'ner Schleife.

Setz aber jetzt mal (versehentlich) das GOTO vor SHOWSCREEN. :D

 -> Strg-Alt-Entf :D

Mir ist natürlich klar, dass das falsch wäre, weil SHOWSCREEN ja dann nie ausgeführt
wird und man ja nichts sehen würde.
 Ich sag das deswegen, weil das  manchmal halt so Kleinigkeiten sind, wo man Stundenlang nach dem Fehler sucht. Das Programm hängt sich auf und man fragt sich warum. Bloß weil man was vertauscht hat.
Bei diesen paar Zeilen geht's ja noch. Aber man hat ja normalerweise mehr.;)

Cheers
Title: If Then Else
Post by: Vampire on 2006-Dec-27
du sagst es, der teufel  steckt ,wie immer, im detail.
der von mir gepostete code war noch nichtmal das "original". er beschreibt nur das problem, das ich hatte. der originalcode war völlig unübersichtlich geworden durch auskommentierte zeilen mit denen ich experimentiert hatte usw...
zum schluß war ich völlig konfus :D

das schlimmste was mir mal passiert ist, war das nicht beachten der groß/klein schreibung einer variablen.
ich deklariere meine variablen bevor ich sie benutze und hatte eine groß geschrieben ( entgegen meiner gewohntheit), als ich sie dann einsetzen wollte klappte es nicht.
es hat bestimmt 2 stunden gedauert bis mir das aufgefallen ist...
ich war fix und fertig :D
Title: If Then Else
Post by: Kitty Hello on 2006-Dec-28
Wg. Gorß-Kleinschreibung: Schau mal was der Compiler ausgibt, besonders wenn Du auf DEBUG umstellst. Dann sagt er dir sachen wie:
Code (glbasic) Select
warning : implicitly created GLOBAL  : xyzDamit weißt Du: Hier macht er eine GLOBAL Variable, ohne dass Du sie vorher mit GLOBAL oder LOCAL angelegt hast. Das sind oft so vertippsler.
Title: If Then Else
Post by: Vampire on 2006-Dec-28
danke gernot, genauso sowas passiert mir oft... :)