Problem mit If-Schleife: Egal welcher Input, immer dasselbe

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nikonoob

Betreff: Problem mit If-Schleife: Egal welcher Input, immer dasselbe

BeitragSa, Jun 16, 2007 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich komme heute mit einer (wahrscheinlich ziemlich dummmen) Anfängerfrage: Ich habe den folgenden Code:
Code: [AUSKLAPPEN]
Graphics 800,600,16
SetBuffer BackBuffer()
Text 0,0,"Kleiner Taschenrechner (NKT). Fahre fort beliebiger Taste"
WaitKey()
Cls
Text 0,0,"Möchtest du die Anleitung zur Benutzung des Taschenrechners lesen?"
Locate 0,14
anleitung = Input("Gib j ein für JA oder n für NEIN: ")
If anleitung = j Then
Cls
 Text 0,0,"Es ist ganz einfach: Du wirst zur Eingabe von zwei Zahlen aufgefordert."
 Text 0,14,"Die erste Zahl sollte immer die größere von beiden sein."
 Text 0,28,"Danach werden sofort 5 Rechnungen durchgeführt:x+y,x-y,x*y,x/y,x^y"
 Text 0,42,"Drücke nun eine Taste um zum Rechner zu gelangen."
ElseIf anleitung = n Then
 Cls
 Text 0,0,"Drücke eine beliebige Taste um fortzufahren."
EndIf


Das ganze soll später ein kleiner Rechner werden, allerdings tritt hier mein Problem auf: Ich will die Möglichkeit bieten, eine Anleitung einzublenden, mithilfe von einem Input. Allerdings wird die Anleitung im Moment IMMER eingeblendet, auch wenn ich etwas ganz anderes als j oder gar n eingebe!

Kennt jemand die Lösung des Problems? Wo liegt mein Fehler?

Eingeproggt

BeitragSa, Jun 16, 2007 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Setz in der Abfrage
Code: [AUSKLAPPEN]
If anleitung = j Then

und
Code: [AUSKLAPPEN]
elseif anleitung = n Then

mal Anführungszeichen. Sonst vergleicht Blitz die Eingabe mit der Variable j. Diese ist 0 und ein String (die Eingabe) ist auch 0 -> Abfrage ergibt True.

Übrigens empfehle ich dir auch mal Flip zu verwenden...
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Nikonoob

BeitragSa, Jun 16, 2007 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Das habe ich auch schon versucht, dann passiert aber gar nichts, egal was ich drücke, es kommt immer sofort "Program has ended"

D2006

Administrator

BeitragSa, Jun 16, 2007 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, weil "anleitung" ein Integer und keine Zeichenkette ist...

Mir dünkt, du solltest dir nochmal die Grundlagen anschauen!
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Spikespine

BeitragSa, Jun 16, 2007 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
Text 0,0,"Kleiner Taschenrechner (NKT). Fahre fort beliebiger Taste"
WaitKey()
Cls
Text 0,0,"Möchtest du die Anleitung zur Benutzung des Taschenrechners lesen?"
Locate 0,14
anleitung$ = Input("Gib j ein für JA oder n für NEIN: ")
If anleitung$ = "j" Then
Cls
 Text 0,0,"Es ist ganz einfach: Du wirst zur Eingabe von zwei Zahlen aufgefordert."
 Text 0,14,"Die erste Zahl sollte immer die größere von beiden sein."
 Text 0,28,"Danach werden sofort 5 Rechnungen durchgeführt:x+y,x-y,x*y,x/y,x^y"
 Text 0,42,"Drücke nun eine Taste um zum Rechner zu gelangen."
 WaitKey
ElseIf anleitung$ = "n" Then
 Cls
 Text 0,0,"Drücke eine beliebige Taste um fortzufahren."
 WaitKey
EndIf
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Christoph

BeitragSa, Jun 16, 2007 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Fehler:

Code: [AUSKLAPPEN]
anleitung = Input("Gib j ein für JA oder n für NEIN: ")


Die Variable anleitung kann nur Ganzzahlen speichern, setze ein $ dahinter, damit sie Strings speichern kann

2. Fehler

Code: [AUSKLAPPEN]
If anleitung = j Then


Setze um j Anführungsstriche (das gleiche gilt auch für n)
 

Nikonoob

BeitragSa, Jun 16, 2007 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahhhh, danke....ich war so dumm: Beides hatte ich schonmal gemacht, sowohl j und n in anführungszeichen gesetzt als auch anleitung als string zu machen....nur beides zusammen hab ich nicht probiert^^


naja, danke, sorry wegen dem anfängerfehler...

Noobody

BeitragSa, Jun 16, 2007 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
WaitKey

Und wenn ich mich nicht täusche, fehlen da noch zwei Klammern...
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Lador

BeitragSa, Jun 16, 2007 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich informiert bin, ist WaitKey() dafür da, um einen bestimmten ASCII-Code zu erhalten, von der Taste die gedrückt wird. WaitKey hält das Programm ebenfalls solange an, bis eine Taste gedrückt wird, allerdings liefert es keinen Wert zurück.

MFG Lador

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jun 16, 2007 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@Lador
Hier mal das Testprogramm für Waitkey() ...
und es doch! Wink
Code: [AUSKLAPPEN]
Repeat

Print WaitKey()

Until KeyDown(1)
[BB2D | BB3D | BB+]

Christoph

BeitragSa, Jun 16, 2007 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du von einer Funktion keinen Rückgabewert brauchst, kannst du in BB die Klammern weglassen

d.h. mit

Waitkey
und
Waitkey()

wird die selbe Funktion aufgerufen, allerdings liefert Waitkey den Wert 0 zurück, währen Waitkey() eine Ganzzahl als Ergebnis zurückliefert.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group