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:

immer mit ESC abbrechen geht nicht

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



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 30.12.2004, 20:30    Titel: immer mit ESC abbrechen geht nicht Antworten mit Zitat

Hallo an Euch!!!

Ich habe schon angefangen zu lernen, natürlich versuche ich alles umzusetzen, aber das mit dem Beispiel, in den Monsterfaq wie man das Programm immer mit escape abbrechen kann, geht irgendwie nicht...
ich habe es so gemacht:
do
print.....
.....
loop while inkey$<>CHR$(27)

Was habe ich falsch gemacht???
Ich werde bis zum erbrechen nach dem namen gefragt, und auch nett begrüßt, aber ich kann niemals nie nicht mit escape beenden!!!
Wieso nicht??
Bitte gebt mir einen kleinen Schubs, ich sitz grad auf der Leitung...
:fragezeichen:
Vielen Dank an Euch!!
Viele liebe Grüße und
Ein gutes neues Jahr
wünscht Euch
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 30.12.2004, 20:33    Titel: nachtrag!!! Antworten mit Zitat

Hallo, nochmal!!!

Ich habe vergessen, dass ich nach loop in der nächsten zeile noch
end
geschrieben habe!!!

Es sieht also so aus:
do
print....
....
loop while inkey$ CHR$<>(27)
end

Das hatte ich vergessen!!!
Noch mal
einen lieben Gruß
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 30.12.2004, 21:12    Titel: Antworten mit Zitat

Es wäre möglich, dass du in der Do-Loop-Schleife bereits INKEY$ abfragst für was anderes und somit der Tastaturpuffer bereits leer ist, wenn am Ende der Schleife auf ESC-Druck überprüft wird.
Du überbrückst dies, indem du INKEY$ nur ein einziges mal ausliest:
Code:
DO
 K$=INKEY$
 ...befehle
LOOP UNTIL K$=CHR$(27)


Kann sein, dass das das Problem war - so wars zumindest ganz früher bei mir mal lächeln

Grüßle,
Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 01.01.2005, 18:48    Titel: Antworten mit Zitat

Hallo Mecki!!!

Leider ist das nicht das Problem...es geht nicht, ich hab es auf verschiedene Art versucht, aber es geht nie...

Ich verstehe auch irgendwie den Befehl nicht??

Ich meine, ich frage nach, welche Taste gedrückt ist, aber wie weiß QBasic, was es dann machen soll, wenn die Taste gedrückt ist??

Wie es gehen soll, hab ich mir so gedacht, ich weiß nicht, ob es stimmt, bitte sagt mir, ob ich auf dem Holzweg bin:
Also, ich dachte es geht so:
ich sage QB das:
i=0,
und wenn i=1 dann ist ende
wenn die Taste CHR$(27) gedrück ist, dann ist i=1
und folglich Ende!
(Diesen Befehl müßte man dann doch am Anfang jeden Programmes stehen haben können, oder??)
Aber bei dem Befehl in den Monfaq komm ich nicht mit???
Dort verstehe ich das nur so:
mache das:
schau welche Taste gedrückt ist
wiederhole sofort wenn CHR$(27) gedrückt wurde

Anders versteh ich es nicht...bin ich echt sooo blond??? verlegen
Bitte helft mir wieder!!!
Viele Grüße und
Prosit Neujahr!!!!!
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 01.01.2005, 19:04    Titel: Antworten mit Zitat

Also das das mit dem i ist denke ich nicht notwendig.

Einfach:
Code:
DO
  K$=INKEY$
  IF K$=CHR$(27) THEN ?"ESC wurde gedrückt": EXIT DO
  IF K$=CHR$(13) THEN ?"Du hast Enter gedrückt!"
  IF K$="a" THEN ?"Du hast a gedrückt!"
  IF K$="A" THEN ?"Du hast A gedrückt!"
LOOP

Achja: und so kannst du sowohl "a", als auch "A" auswerten:
  IF K$="a" OR K$="A" THEN ?"Du hast a oder A gedrückt!"

oder noch einfacher: (den Eingabe$ vor dem Vergleichen in Großbuchstaben umwandeln)
  IF UCASE$(K$)="A" THEN ?"Du hast a oder A gedrückt!"
oder: (Großbuchstaben in Kleinbuchstaben)
  IF LCASE$(K$)="a" THEN ?"Du hast a oder A gedrückt!"


Grüßle, Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 01.01.2005, 22:23    Titel: Antworten mit Zitat

Hallo Mecki!!!

Auch das geht nicht...
Ich schreibe das her, was ich auch da habe, vielleicht kommst Du drauf, was da schief geht...

cls
? "wie ist dein name?"
nochmal:
input name$
if name = "" then goto nochmal
else ? "hallo, "; name$ + " schön dich kennenzulernen!"
end if

Vorher habe ich mit anderer Hintergrundfarbe meinen namen und meine email adresse für 3 sekunden hingeschrieben, dann eben das cls!!

Weißt Du wo da "der Hund begraben" liegt???
Ich hoffe sehr, dass es nicht ist, weil das XP irgendwas verhindert, oder stört...
Liebe Grüße
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 01.01.2005, 23:02    Titel: Antworten mit Zitat

das problem liegt beim INPUT name$
nachs du vielleicht so das wen man Exit eingibt das programm entweder beendet wird oder abbricht
Code:

CLS
PRINT "Wie ist dein Name? (mit Exit abbrechen)"
DO
INPUT "", name$
IF UCASE$(name$)="EXIT" THEN EXIT DO ' um die schleife zu verlassen
'oder anstatt "EXIT DO" END nehmen um das ganze pogramm zu beenden
IF name$<>"" THEN
PRINT "Hallo, ";name$;" schön dich kennenzulernen!"
EXIT DO
END IF
LOOP

müsst funktionieren ist grad blos aus dem kopf
_________________
MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 01.01.2005, 23:07    Titel: Antworten mit Zitat

Hallo !

Ist das der Teil, der in der DO...LOOP Schleife steht ? Wenn ja, dann geht es nicht, weil INPUT das Programm anhält, bis Enter gedrückt wurde. Alternativ könntest du ja beenden, wenn nichts eingegeben wird anstelle zu nochmal: zurückzukehren. Oder du machst die ganze Eingabe mit INKEY$ selbst, indem du Zeichen für Zeichen aneinanderhängst, bis Enter oder ESC gedrückt wurde.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 02.01.2005, 18:36    Titel: Antworten mit Zitat

Hallo Ihr!!!

Vielen Dank! Jetzt verstehe ich, wieso es nicht geht... aber in den meisten Programmen wird ja dauernd eine Eingabe verlangt, dann greift diese Do Loop Schleife eigentlich nie???
Wie löst man das Problem denn dann???
Ich habe es so gemacht, wie ich anfangs gemeint hab:
for i=0 to 1
if inkey$=chr$(27) then i=1
next i
Das hab ich an den Anfang gesetzt, jetzt kann man das Programm zwar nicht während einer Eingabeaufforderung beenden, aber immer dazwischen, oder????

Was meint Ihr, kann man das so lassen, oder ist das irgendwie blöd??
Alles Gute für Euch
liebe Grüße
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 02.01.2005, 19:51    Titel: Antworten mit Zitat

Hi Helli!

Nein, das ist eben das Problem, das ich in meinem Posting oben schon angesprochen habe.

Sobald du INEKY$ ausliest, ist der Tastaturpuffer damit ausgelesen und somit (meistens) leer.
Beim nächsten INKEY$, das wohl nur Sekundenbruchteile später kommt, ist natürlich noch keine Taste zum Puffer hinzugekommen.

Daher darf man das Inkey$ nur einmal pro Schleifendruchgang auslesen.
Code:
K$ = INKEY$
Und anschließend, nach dem Laden des Pufferinhalts in einen anderen, normalen String, kannst du diesen dann mit IF und Co. abfragen.

Grüßle,
Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 04.01.2005, 18:41    Titel: Antworten mit Zitat

Hallo an Euch!!!

Ich habe einen Befehl gefunden, der key on heißt!
Könnte ich vielleicht den verwenden, um das Programm "immer" mit Escape abzubrechen??
Oder besteht das Problem mit dem leeren Puffer, egal welchen Befehl ich verwende??
Den key on habe ich schon versucht, aber er will immer irgendnoch was wissen, dabei hab ich (glaub ich halt) die Syntax richtig, würdet Ihr mir bitte anhand einer Zeile diesen key Befehl zeigen??
Vielen Dank!!!!
Liebe Grüße
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 04.01.2005, 22:55    Titel: Antworten mit Zitat

Hallo

Sieh dir doch mal die QB-Onlinehilfe oder die Monster-FAQ auf qbasic.de an, oder gib ON KEY als suchbegriff hier im Forum an. Das ist eine von den Sachen die schon -zig mal erklärt wurden.

Der ON KEY-Befehl funktioniert aber auch nicht, während auf eine Eingabe mit INPUT gewartet wird.

So kannst du z.B. mit F1 abbrechen:

KEY (1) ON
ON KEY (1) GOSUB raushier
...
...
raushier:
END

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 08.01.2005, 19:40    Titel: Antworten mit Zitat

Hallo Skilltronic!!!

Ich bin noch nicht durch, mit dem durchforsten!!
Das ist eine gute Idee von Dir gewesen!!
Weißt, man denkt so an sein Problem, dass man gleich um Hilfe schreit, wenn man nicht weiterkommt, man denkt gar nicht daran, dass andere auch so ein Problem haben könnten!!!
Danke für den Tipp, ich schau jetzt, bevor ich wieder gleich um Hilfe ruf!!!
viele Grüße
Helli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bernd



Anmeldungsdatum: 14.09.2004
Beiträge: 498
Wohnort: Kulmbach

BeitragVerfasst am: 08.01.2005, 21:09    Titel: Antworten mit Zitat

Ehm, sicher, dass das Problem nicht folgendes war?

loop until while inkey$ <> CHR$(27)

Wieso hast du da statt = einfach <> genommen, oder ist das in QB gleichbedutend?

Ich würds auf alle Fälle mal ausprobieren!

Die Anderen habens zwar schon ausgebessert in ihren Codes, aber wenn ichs nicht überlesen habe, nicht ausdrücklich daraufhin gewießen!

Bernd
_________________
Neue Homepage: http://www.glubb.rockt.de

UND

Der Wahnsinn hat seine eigene Homepage: http://pulmollwand.rulz.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 08.01.2005, 23:03    Titel: Antworten mit Zitat

Bernd hat Folgendes geschrieben:
loop until while inkey$ <> CHR$(27)

Wieso hast du da statt = einfach <> genommen, oder ist das in QB gleichbedutend?


loop until while?

"=" und "<>" sind keinesfalls gleichbedeutend, sie sind das exakte Gegenzeil voneinander, denn "<>" bedeutet "ungleich".

Wenn mit ESC abgebrochen werden soll, würde ich

Code:
DO
x$ = INKEY$

' weitere Befehle

LOOP UNTIL x$ = CHR$(27)

_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 12.01.2005, 02:35    Titel: Antworten mit Zitat

Hallo !

Bernd hat Folgendes geschrieben:
Ehm, sicher, dass das Problem nicht folgendes war?

loop until while inkey$ <> CHR$(27)

Wieso hast du da statt = einfach <> genommen, oder ist das in QB gleichbedutend?



Das Problem war, dass einerseits eine Eingabe mit INPUT gemacht werden, und dabei gleichzeitig ein Abbruch mit ESC möglich sein sollte. Genau das geht aber nicht, weil INPUT erst mit ENTER bestätigt werden muss. Die einzige Lösung wäre, eine INPUT-ähnliche Eingabe mit INKEY selbst zu schreiben. Dazu hat dreael diesen Link gepostet:
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/BildschirmMasken.html

Oder man verzichtet darauf, bleibt bei INPUT und bricht z.B. bei der Eingabe von irgendwas wie "STOP" ab oder wenn vor dem ENTER nichts eingegeben wird.

While bedeutet übrigens soviel wie "während" oder "solange" und until heisst "bis"

DO: LOOP WHILE INKEY$ <> CHR$(27)

meint also das gleiche wie

DO:LOOP UNTIL INKEY$ = CHR$(27)

nämlich

Durchlaufe die Schleife, solange die letzte gedrückte Taste ungleich der ESC-Taste ist

bzw.

Durchlaufe die Schleife, bis die letzte gedrückte Taste gleich der ESC-Taste ist

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Helli M.



Anmeldungsdatum: 20.12.2004
Beiträge: 29
Wohnort: Burgenland in Österreich

BeitragVerfasst am: 12.01.2005, 18:54    Titel: Antworten mit Zitat

Hallo Scilltronic!!!!


Ich bin begeistert!!!

Diese Antwort hat mir genau das gesagt, was ich wissen wollte!!
Durch diesen Link hast Du mir genau klar gemacht, worauf es ankommt!!
vor Freude klatschen So freue ich mich echt aufs weiterlernen!!!

Viele Grüße
und alles Gute
Helli
_________________
Wieso einfach, wenn's auch kompliziert geht?!
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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 QBasic. 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