Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 30.12.2004, 20:30 Titel: immer mit ESC abbrechen geht nicht |
|
|
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 |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 30.12.2004, 20:33 Titel: nachtrag!!! |
|
|
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 |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 30.12.2004, 21:12 Titel: |
|
|
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
Grüßle,
Mecki _________________ » Yodl.de: So sucht man gestern.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 01.01.2005, 18:48 Titel: |
|
|
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???
Bitte helft mir wieder!!!
Viele Grüße und
Prosit Neujahr!!!!!
Helli |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 01.01.2005, 19:04 Titel: |
|
|
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.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 01.01.2005, 22:23 Titel: |
|
|
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 |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 01.01.2005, 23:02 Titel: |
|
|
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 |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 01.01.2005, 23:07 Titel: |
|
|
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 |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 02.01.2005, 18:36 Titel: |
|
|
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 |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 02.01.2005, 19:51 Titel: |
|
|
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.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.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 04.01.2005, 18:41 Titel: |
|
|
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 |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 04.01.2005, 22:55 Titel: |
|
|
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 |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 08.01.2005, 19:40 Titel: |
|
|
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 |
|
 |
Bernd

Anmeldungsdatum: 14.09.2004 Beiträge: 498 Wohnort: Kulmbach
|
Verfasst am: 08.01.2005, 21:09 Titel: |
|
|
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 |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 08.01.2005, 23:03 Titel: |
|
|
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.  |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 12.01.2005, 02:35 Titel: |
|
|
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 |
|
 |
Helli M.

Anmeldungsdatum: 20.12.2004 Beiträge: 29 Wohnort: Burgenland in Österreich
|
Verfasst am: 12.01.2005, 18:54 Titel: |
|
|
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!!
So freue ich mich echt aufs weiterlernen!!!
Viele Grüße
und alles Gute
Helli _________________ Wieso einfach, wenn's auch kompliziert geht?! |
|
Nach oben |
|
 |
|