 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 17.09.2009, 18:20 Titel: GetkeyPress mit Auswahl "B" |
|
|
hallo zusammen. Habe eine kleine, einfache Frage zur Auswahl von Buchstaben eines Menüs, die eine bestimmte Antwort bzw. ein passendes Ergebnis geben sollen. Das klappt eigentlich schon ganz gut, nur bei der Sonderauswahl von "B" ("Bill") geht das so nicht. Wer kann mir helfen ?
Das unten angegebene Beispiel geht mit der Auswahl von "B" nicht, dann wird die obere Auswahl mit y=Getkeypress ungültig.
Also wenn ich "NSEWCSLPQF" drücke passiert es, dass es bestimmte Antworten ergibt, was völlig in Ordnung ist. Nur ich möchte eine separate Auswahl mit "B" die auch funktioniert.
Code: | Print MenuChar("Bill") |
Code: | Do
y=GetKeyPress("", "NSEWCSLPQF" &Esc)
'if z=GetKeyPress("", "B" &Esc) then print "bill sold his soul for money" EndIf
Loop Until InStr("NSEWCSLPQF" &Esc, y)
|
ist für mein Elephanten Basic Menu Skript
schönen Tag noch, Löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.09.2009, 22:34 Titel: |
|
|
Kann es sein, dass GetKeyPress bei der Abfrage der Tastatur auch gleich den Tastaturpuffer leert?
Es gibt Befehle, die den aktuellen Zustand der Tastatur abfragen (z.B. Multikey), und solche, die aus dem Tastaturpuffer lesen (z.B. Inkey). Bei der Benutzung letzterer führt schon die erste Abfrage (Belegung der Variable y) dazu, dass bei der zweiten Abfrage (Belegung von z) der Tastendruck "B" gar nicht mehr im Speicher ist.
Ehrlich gesagt, ich kenne weder die Funktion MenuChar, noch GetKeyPress; liegt wohl daran, dass ich seit Version 0.17b nicht mehr aktiv die Geschehnisse verfolgen konnte... da beides in der Referenz nicht zu finden ist, gehe ich davon aus, dass es API-Befehle sind?
Anyway, wenn die Theorie mit dem Tastaturpuffer stimmt, mach's so, dass du erst mal in eine Variable x aufnimmst, ob überhaupt eine Relevante Taste gedrückt wurde, also "NSEWCSLPQB". Und danach unterscheide weiter mit SELECT CASE, IF oder was auch immer zwischen NSEWCSLPQF und B.
Did it work?
Have a nice day
Ciao
Dusky_Joe _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 20.09.2009, 10:29 Titel: |
|
|
hi Dusky_joe, erst mal Danke für deine Antwort! Dachte schon, da kommt gar nichts mehr.
Ich hatte ähnliche Gedanken wie du mit dem Tastaturbuffer leeren, aber es scheint wohl, dass dieses Problem der getrennten Buchstaben Ansteuerung (hier: "B") mit meinem "GetkeyPress" Befehl in meiner Hauptanwendung besteht, wie ich "y" und "b" definiere, was sie machen sollen. Was in der Beispiel Datei geschieht, ist ja davon abhängig, wie ich meine DLL programmiert habe
Zitat: |
Declare Function GetKeyPress lib "elephant_basic" Alias "GetKeyPress" |
Ich habe eine eigene DLL erstellt mit FB und GetKeyPress und MenuChar so definiert
zum Problem meiner "elephant-test".bas:
Code: | Print MenuChar("north")
Print MenuChar("south")
Print MenuChar("east")
Print MenuChar("west")
Print MenuChar("centre")
Print MenuChar("sky")
Print MenuChar("linking park")
Print MenuChar("pet shop boys")
Print MenuChar("queen")
Print MenuChar("FEdit")
Print MenuChar("Bill")
print
Print MenuChar("Where do you want to go big elephant? (go standard: queen)", 53);
print
Do
y=GetKeyPress("", "NSEWCSLPQF" &Esc)
'if z=GetKeyPress("", "B" &Esc) then print "bill sold his soul for money" EndIf
Loop Until InStr("NSEWCSLPQF" &Esc, y) |
hab's mit "B" und ohne "B" probiert .
y=GetKeyPress("", "NSEWCSLPQFB" &Esc)
Zitat: | Es gibt Befehle, die den aktuellen Zustand der Tastatur abfragen (z.B. Multikey), und solche, die aus dem Tastaturpuffer lesen (z.B. Inkey). Bei der Benutzung letzterer führt schon die erste Abfrage (Belegung der Variable y) dazu, dass bei der zweiten Abfrage (Belegung von z) der Tastendruck "B" gar nicht mehr im Speicher ist.
|
Danke, das stimmt wohl! Werd's nochmals checken.
meine Lösung suchen: ich muss in meiner Hauptanwendung "elephant.bas" suchen, wo die Lösung des Problems steckt, nicht in der Beispieldatei die ja nur testet Wenn ich eine Lösung habe, melde ich mich zurück. Danke für deine Hilfe. Baut auf! Dachte ich könnte das alles in der testdatei elephant-test.bas abrufen. Geht wohl nicht.
Aber eigentlich kann ich auch ohne "B" leben bzw. ohne Bill
Das ist nur eine Lernübung für mich, wie ich mit einer DLL umgehe und daraus lernen kann. Schönen Tag noch.
beste Grüße, löwenherz _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|