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

Anmeldungsdatum: 09.05.2005 Beiträge: 16
|
Verfasst am: 14.09.2005, 22:25 Titel: Probleme mit Input |
|
|
Hallo Leutz hätte ne kleine Frage denke ist bestimmt nur ne Kleinigkeit aber ich komme u. komme im mom net drauf
Also mein Prob is volgendes
Code: |
CALL Maske
CALL Anfang
SLEEP
CLS
CALL Maske
CALL EingabeMaske
INPUT ; "Bitte gib was ein"; Zahl%
END
|
Wenn ich bei Sleep ankomme dann eine Taste drücke springt er zwar auf die nächsten Schritte aber ich kann keine Zahl eingeben der Cursor blinkt auch nicht (es wird keiner angezeigt) aber die Textausgabe von Input is da??? sobald ich wieder eine taste drücke endet das Prog.
Setz ich SLEEP beispielsweise auf SLEEP 2 funktioniert es tadelos !?
Keine Ahnung wisst Ihr warum u. was man z.b. anders machen Könnte???
thx im voraus
Smokie_joe
Maske u. EingabeMaske sind nur für Hintergrund rahmen ..... |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.09.2005, 22:31 Titel: |
|
|
Verwendest du Doublebuffering?
Daran könnte es liegen, dass die INPUT-Klamotte nicht zu sehen ist...
Und könnte beim INPUT nicht auch ein Fehler sein?
INPUT ; "Bitte gib was ein"; Zahl%
jb |
|
Nach oben |
|
 |
Smokie_joe

Anmeldungsdatum: 09.05.2005 Beiträge: 16
|
Verfasst am: 14.09.2005, 22:35 Titel: |
|
|
Doublebuffering ???? was ist das !!
am input sollte es norm. nicht liegen mit SLEEP 1 gehts wunderbar. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 15.09.2005, 17:46 Titel: |
|
|
So nennt man das arbeiten mit zwei Bildschirmseiten:
Code: |
SCREEN 7, , 0, 1
' Bildschirm mit zwei Seiten initialisieren
DO
' WICHTIG: Graphik in die UNSICHTBARE Bildschirmseite schreiben
x = x + 1
IF x > 320 THEN x = 0
CIRCLE(x, 100), 10, 10
' WICHTIG: Grafik in die SICHTBARE Bildschirmseite kopieren
' Ohne diese Zeile sieht man nichts!
PCOPY 0, 1
' Bildschirm wieder löschen
CLS
' Und ein Päuschen:
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
' Bis Escape gedrückt wird
LOOP UNTIL INKEY$ = CHR$(27)
END
|
Schau zum Thema Doublebuffering ungedingt mal in die MonsterFAQ.
jb |
|
Nach oben |
|
 |
Smokie_joe

Anmeldungsdatum: 09.05.2005 Beiträge: 16
|
Verfasst am: 15.09.2005, 21:28 Titel: |
|
|
k thx werd ich machen
arbeite nicht mit 2 Bildschirmseiten hört sich aba intersant an  |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 15.09.2005, 23:15 Titel: |
|
|
@Smokie_joe äähm... er meint nicht zwei bildschirme als hardware... lies am besten in monFaq was das ist. |
|
Nach oben |
|
 |
Smokie_joe

Anmeldungsdatum: 09.05.2005 Beiträge: 16
|
Verfasst am: 16.09.2005, 08:55 Titel: |
|
|
Dachte mir schon das wenn es um die erstellung Software geht es sich um Virtuele Bildschirme handelt.
Trozdem thx  |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 16.09.2005, 11:17 Titel: |
|
|
dann entschuldige ich mich
habs irgendwie so aufgenommen. |
|
Nach oben |
|
 |
pinkpanther

Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 20.09.2005, 16:05 Titel: |
|
|
Hallo Smokie_joe,
dein Problem lässt sich einfach lösen. Ersetze den Befehl "SLEEP" einfach durch folgende Programmzeile:
Code: | DO UNTIL LEN(INKEY$): LOOP |
Ursache deines Problems ist, dass SLEEP die Taste, die das Programm aus dem "Schlafzustand" holt, nicht aus dem Tastaturpuffer entfernt. Wenn du also nach dem Befehl SLEEP die Eingabetaste drückst, bleibt diese im Tastaturpuffer zurück. Der nächste Befehl, der den Tastaturpuffer abfragt, ist nun der INPUT-Befehl. Dort kommt es dann stets zu einer Leereingabe, weil vor jeder weiteren Tastatureingabe die immer noch wartende Eingabetaste abgearbeitet wird. Diese schließt den INPUT-Befehl ab, und der Benutzer hat nie die Chance, Daten einzugeben. Nachdem der INPUT-Befehl der letzte in deinem Programm ist, tritt Programmende ein, der Cursor wird unsichtbar und der QB-Editor schreibt dir "Beliebige Taste drücken, um fortzusetzen" an den unteren Bildschirmrand.
INKEY$ hingegen liest die zuletzt gedrückte Taste aus dem Tastaturpuffer und löscht sie dort, sodass INPUT einen leeren Tastaturpuffer vorfinden sollte.
Das Semikolon vor der Textausgabe des INPUT-Befehls würde ich übrigens entfernen und das Semikolon nach der Textausgabe durch ein Komma ersetzen, weil sonst ein (in diesem Fall unpassendes) Fragezeichen ausgegeben wird.
lG
pinkpanther  |
|
Nach oben |
|
 |
|