Seite 1 von 1
Der Befehl Inkey()
Verfasst: 30.07.2006 22:39
von obbba
Code: Alles auswählen
OpenConsole()
Repeat
key$=Inkey()
Delay(20)
Until key$<>""
Debug PeekB(@key+1)
Debug #PB_Key_N
CloseConsole()
Warum kommt da nicht beid beiden "Debugzeilen" das gleiche raus, wenn ich auf die Taste "n" drücke?
Verfasst: 31.07.2006 02:01
von mk-soft
Code: Alles auswählen
OpenConsole()
Repeat
key$=Inkey()
Delay(20)
Until key$<>""
Debug Asc(key$) ; <--- geändert, Key und Key$ sind zwei verschiedene Variablen
Debug #PB_Key_N
CloseConsole()
#PB_Key_ ist Scancode der Tastertur. Der Scancode wird erst mit der eingestellten Sprache übersetzt.
FF

Re: Der Befehl Inkey()
Verfasst: 31.07.2006 13:44
von Kaeru Gaman
ich versteh auch nicht, warum +1 ?
sollte doch gehen, oder?
um den Hinweis von mk nochmal ausführlicher zu wiederholen:
die tastatur-scancodes sind
keine ASCII-codes.
was ja irgendwie logisch ist, da ja Cursor-Up und Backspace keine Zeichen sind.
Verfasst: 31.07.2006 13:57
von obbba
Code: Alles auswählen
OpenConsole()
Repeat
key$=Inkey()
Delay(20)
Until key$<>""
Debug PeekB(@key$+1)
Debug #PB_Key_N
CloseConsole()
HA!!!
So geht's nämlich doch!!
Lest euch den Befehl Inkey nochmal durch...

Verfasst: 31.07.2006 14:06
von Kaeru Gaman
> Lest euch den Befehl Inkey nochmal durch...
ok.. in 3.94 wird der scancode noch an zweiter stelle mit übergeben.
aber in 4.0 ist das konzept komplett geändert, da gibts ne extra-funktion RawKey() für den Scancode.
Verfasst: 31.07.2006 14:06
von mk-soft
Wer lesen kann ist im Vorteil
Gibt einen "ein Zeichen"-String zurück
Du liest immer nur das NULLBYTE. "String Ende". allso ein Byte zu weit.
FF
MIST, ZU LANGSAM
Verfasst: 31.07.2006 14:07
von Kaeru Gaman
> Wer lesen kann ist im Vorteil
genau, mk, lies mal obbbas signatur...

Verfasst: 31.07.2006 14:09
von mk-soft
Übersehen und jetzt gelesen. OK

Verfasst: 31.07.2006 14:16
von Kaeru Gaman
hab ich ja auch zuerst überlesen, hätte schon beinahe ne blöde antwort geschrieben...
@obbba
ich empfehle dir, mit folgendem konstukt zu arbeiten:
und im anschluss nur noch I1$ und I2$ auszuwerten.
das mag erstmal kompliziert oder unsinnig aussehen,
aber es erleichtert die spätere umstellung auf 4.0 ungemein.
dann müsst du nämlich nur diese einzige zeile ersetzen durch: