| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		RaideR
 
 
  Anmeldungsdatum: 15.09.2006 Beiträge: 21
 
  | 
		
			
				 Verfasst am: 01.02.2007, 22:10    Titel: Kleines Problem mit goto ( bin mir aber auch net sicher) | 
				     | 
			 
			
				
  | 
			 
			
				Hi!
 
Der Code hier ist zwar nicht gerade die sauberste Lösung aber naja was solls... Kann mir einer sagen wo ich den Fehler drin hab? Wenn der Benutzer die Taste a gedrückt hat dann soll es ihm auch ausgegeben werden, wenn der Benutzer die Taste l ( L ) gedrückt hat soll es ihm auch ausgegeben werden... das ganze soll aber nur einmal passieren sodass der Benutzer nur einmal a und einmal l drücken kann... Wenn der Benutzer als erstes l drückt und danach a funktioniert das auch super!
 
Wenn der Benutzer nun aber als erstes a drückt und dann l wird nichts ausgegeben...
 
Kann mir einer bitte den Fehler zeigen? ( Ich hoffe ich hab mich jetzt nicht so umständlich ausgedrückt   )
 
 	  | Code: | 	 		  
 
CLS
 
 
Do
 
 
 taste$=Inkey$
 
 If WeiterA = 1 Then Goto WeiterAgo
 
 If taste$ = CHR$(65) or taste$ = CHR$(97) THEN
 
 Print "a wurde gedrückt" 
 
 WeiterA = 1
 
 WeiterAgo:
 
 If WeiterB = 1 Then Goto WeiterBgo
 
 Elseif taste$ = CHR$(76) or taste$ = CHR$(108) Then
 
 Print "l wurde gedrückt"
 
 WeiterB = 1
 
 End if
 
 WeiterBgo:
 
 
Loop Until WeiterA = 1 and WeiterB = 1 | 	  
 
 
Ich weiß... die Goto-Befehle nerven aber wir hatten noch net so wahnsinning viel anderes im Unterricht  
  Zuletzt bearbeitet von RaideR am 01.02.2007, 22:12, insgesamt einmal bearbeitet | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		proXy
 
 
  Anmeldungsdatum: 29.01.2007 Beiträge: 6
 
  | 
		
			
				 Verfasst am: 01.02.2007, 22:49    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				hallooo...
 
 
Obwohl ich auch noch eher Anfänger bin, kann ich dir schon jetzt von GOTO abraten   Du siehts, wie kompliziert dies schon in deinem kleinen Programm wird. Jetzt kannst du dir etwa vorstellen, wie kompliziert GOTO in einem etwas grösseren Programm würde..  
 
Ansonsten könntest du in deinem Fall Subroutinen verwenden. Macht aber in einem so kurzen Programm wenig Sinn. (http://www.antonis.de/qbkochbu/index.htm#alls)
 
 
Edit: Ups... Mein Programm war wohl die Lösung für ein anderes Proglem und hatte obendrein noch einen Programmierfehler..   | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		ytwinky
 
  
  Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
  | 
		
			
				 Verfasst am: 01.02.2007, 23:25    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				..und wieder schlägt der GOTO-Hunter zu: 	  | Code: | 	 		  CLS
 
DO
 
  taste$ = UCASE$(INKEY$)
 
  IF taste$ = CHR$(65) AND WeiterA <> 1 THEN
 
    PRINT "a wurde gedr?ckt"
 
    WeiterA = 1
 
  END IF
 
  IF taste$ = CHR$(76) AND WeiterB <> 1 THEN
 
    PRINT "l wurde gedr?ckt"
 
    WeiterB = 1
 
  END IF
 
LOOP UNTIL WeiterA = 1 AND WeiterB = 1 | 	  Die Funktion UCase$() wandelt Buchstaben in Großbuchstaben um..
 
..steht aber auch in der Hilfe zu QB45Ger und bestimmt auch in der MonsterFAQ  
 
Der Code ist übersichtlich und funktioniert.. _________________
  	  | v1ctor hat Folgendes geschrieben: | 	 		  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 	  ..also ungefähr so, wie ich GOTO.. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		RaideR
 
 
  Anmeldungsdatum: 15.09.2006 Beiträge: 21
 
  | 
		
			
				 Verfasst am: 02.02.2007, 15:18    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | ytwinky hat Folgendes geschrieben: | 	 		  ..und wieder schlägt der GOTO-Hunter zu: 	  | Code: | 	 		  CLS
 
DO
 
  taste$ = UCASE$(INKEY$)
 
  IF taste$ = CHR$(65) AND WeiterA <> 1 THEN
 
    PRINT "a wurde gedr?ckt"
 
    WeiterA = 1
 
  END IF
 
  IF taste$ = CHR$(76) AND WeiterB <> 1 THEN
 
    PRINT "l wurde gedr?ckt"
 
    WeiterB = 1
 
  END IF
 
LOOP UNTIL WeiterA = 1 AND WeiterB = 1 | 	  Die Funktion UCase$() wandelt Buchstaben in Großbuchstaben um..
 
..steht aber auch in der Hilfe zu QB45Ger und bestimmt auch in der MonsterFAQ  
 
Der Code ist übersichtlich und funktioniert.. | 	  
 
 
jop kann ich bestätigen das er übersichtlich ist und funktioniert
 
aber wir hatten UCASE$ noch net...
 
kann mir denn vll einer sagen was an meinem programm falsch ist? | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		SpionAtom
 
 
  Anmeldungsdatum: 10.01.2005 Beiträge: 395
 
  | 
		
			
				 Verfasst am: 02.02.2007, 15:54    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Das Problem wird sein, dass du deinen IF..THEN..ELSE-Block brichst. Wurde "a" gedrückt, so kommt ja durch das Goto immer die Zeile WeiterAgo. Der Zeile folgt aber ein ElseIF - ein ElseIf, dem kein IF THEN vorrausgeht, weils ja übergangen wird. Vielleicht wird daduch die ELSE-Abfrage, in der die "L"-Überprüfung stattfindet,  übergangen.
 
 
Du könntest ganz auf das Else verzichten und zwei einfache IF-Blöcke machen.
 
 
Hier Blitzbasic-Code (weil ich zu faul bin QB zu starten)
 
 	  | Code: | 	 		  Cls 
 
 
Repeat
 
 
   taste=GetKey() ;Inkey$ 
 
   If WeiterA = 1 Then Goto WeiterAgo 
 
   If taste = 65 Or taste = 97 Then 
 
      Print "a wurde gedrückt" 
 
      WeiterA = 1 
 
   End If
 
.WeiterAgo
 
 
    If WeiterB = 1 Then Goto WeiterBgo 
 
    If taste = 76 Or taste = 108 Then 
 
       Print "l wurde gedrückt" 
 
       WeiterB = 1 
 
   End If 
 
 .WeiterBgo 
 
 
Until WeiterA = 1 And WeiterB = 1 Or KeyDown(1)
 
WaitKey
 
End | 	 
  _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		RaideR
 
 
  Anmeldungsdatum: 15.09.2006 Beiträge: 21
 
  | 
		
			
				 Verfasst am: 02.02.2007, 17:34    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				jop das könnte sein mit der unterbrechung der if schleife
 
danke an alle   | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |