Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

GetkeyPress mit Auswahl "B"

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 17.09.2009, 18:20    Titel: GetkeyPress mit Auswahl "B" Antworten mit Zitat

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 lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 19.09.2009, 22:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 20.09.2009, 10:29    Titel: Antworten mit Zitat

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 zwinkern

Zitat:

Declare Function GetKeyPress lib "elephant_basic" Alias "GetKeyPress"


Ich habe eine eigene DLL erstellt mit FB und GetKeyPress und MenuChar so definiert zwinkern

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 lächeln 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 grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz