Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
FatalError

Anmeldungsdatum: 22.11.2004 Beiträge: 21 Wohnort: Berga/Elster
|
Verfasst am: 06.11.2005, 17:43 Titel: Tastaturpuffer auslesen |
|
|
Nabend
Hab ein Problem das hier schon öfters besprochen wurde und zwar lese ich Tastatureingaben mit INKEY$ ein und wenn ich eine taste gedrückt halte, so kommt nach gewisser Zeit das berühmte piepsen aus dem PC...
Das Problem bei meinem Programm ist, dass es für die Darstellung eines Zeichens ziemlich lange (im vergleich zur normalen ausgabe) braucht.
Nun würde es mir sehr helfen, wenn ich im Programm die Länge des Tastaturpuffers ermitteln und ab einem bestimmten Schwellenwert, einige Operationen abbrechen könnte um die Darstellung zu beschleunigen.
Ok, das ganze gefusel soll bedeuten: Ich muss wissen, wie ich herausbekomme wieviele Zeichen im Tastaturpuffer hängen.
MFG
FatalError |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 06.11.2005, 18:05 Titel: |
|
|
Hallo
Würde es nicht schon reichen, einfach zwischendurch den Tastaturpuffer auszulesen, also statt eine Funktion zu sperren einfach ein
variableohnesinn = INKEY$
einzubauen?
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
FatalError

Anmeldungsdatum: 22.11.2004 Beiträge: 21 Wohnort: Berga/Elster
|
Verfasst am: 06.11.2005, 18:16 Titel: |
|
|
nein würde es nicht. weil die Zeichen nicht verloren gehen dürfen...
ich sag mal grob was ich vorhab: Textverarbeitungsprogramm
wenn da jemand die Backspace Taste drückt um einen längeren Text zu löschen, will ich die aktualisierung der Anzeige (das was so lang dauert) nur noch bei jedem 2. bis 3. zeichen durchführen um die bearbeitung zu beschleunigen und das piepen zu unterbinden.
Oder halt wenn jemand schneller schreibt als der Schall
Nur dazu müsst ich wissen, wann der Puffer halt seine Grenzen erreicht hat =/ |
|
Nach oben |
|
 |
pinkpanther

Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 06.11.2005, 18:19 Titel: |
|
|
@FatalError
Code: | DEFINT A-Z
DECLARE FUNCTION FuellstandTastaturPuffer% ()
CLS
LOCATE 3, 1
PRINT "FUELLSTAND TASTATURPUFFER ERMITTELN"
'Tastaturpuffer leeren
WHILE LEN(INKEY$)
WEND
LOCATE 5, 1
PRINT "Druecke ein paar beliebige Tasten..."
PRINT "(Abbruch mit Escape-Taste)"
COLOR 15
LOCATE 8, 1
PRINT "Der Tastaturpuffer enthaelt derzeit ";
DO
Zeichen = FuellstandTastaturPuffer%
LOCATE , 36
PRINT Zeichen; "Zeichen";
IF Zeichen = 15 THEN
PRINT " und ist damit ";
COLOR 23
PRINT "VOLL!";
COLOR 15
END IF
' Eingabeschleife verlassen, wenn die Escape-Taste
' gedrueckt wurde
' (Escape-Taste = Scancode 1;
' die Abfrage mit INKEY$ wuerde den Tastaturpuffer
' leeren)
LOOP UNTIL INP(&H60) = 1
COLOR 7
END
FUNCTION FuellstandTastaturPuffer%
DEF SEG = 0
PufferKopf& = PEEK(&H41A) + PEEK(&H41B) * 256&
PufferEnde& = PEEK(&H41C) + PEEK(&H41D) * 256&
Zeichen = (PufferEnde& - PufferKopf&) \ 2
' Kopf und Ende des Zirkularpuffers rotieren,
' Ergebnis kann daher negativ sein und muss
' ggf. korrigiert werden
IF Zeichen < 0 THEN Zeichen = Zeichen + 16
FuellstandTastaturPuffer = Zeichen
DEF SEG
END FUNCTION | [/code] _________________ lG
pinkpanther  |
|
Nach oben |
|
 |
FatalError

Anmeldungsdatum: 22.11.2004 Beiträge: 21 Wohnort: Berga/Elster
|
Verfasst am: 06.11.2005, 19:42 Titel: |
|
|
Danke.. funktioniert prima
MFG
FatalError |
|
Nach oben |
|
 |
|