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 :wink:

Re: Der Befehl Inkey()

Verfasst: 31.07.2006 13:44
von Kaeru Gaman
obbba hat geschrieben:

Code: Alles auswählen

Debug PeekB(@key+1)
ich versteh auch nicht, warum +1 ?

Code: Alles auswählen

Debug PeekB(@key$)
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!! 8)

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 :mrgreen:
Gibt einen "ein Zeichen"-String zurück
Du liest immer nur das NULLBYTE. "String Ende". allso ein Byte zu weit.

FF :wink:

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:

Code: Alles auswählen

I$ = Inkey() : I1$ = Left(I$,1) : I2$ = Right(I$,1)
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:

Code: Alles auswählen

I1$ = Inkey() : I2$ = RawKey()