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:

Do-Loop Timer

 
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
Spongebob Schwamm



Anmeldungsdatum: 31.10.2004
Beiträge: 40

BeitragVerfasst am: 06.03.2005, 19:07    Titel: Do-Loop Timer Antworten mit Zitat

Hi!

Ich möchte während einer Do-Loop Schleife die Zeit zählen (natürlich in Sekunden). Die Do- Loop until Inkey$ = Chr$(27) Schleife ist wie der Code schon sagt, mit Esc zu beenden. Dann soll aber auch das Zeitzählen aufhören und dann soll "geprintet"(geschrieben mit dem Print Befehl) werden, wie lange die Schleife in "Betrieb" war.

mfg
Spongebob Schwamm
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 06.03.2005, 19:16    Titel: Antworten mit Zitat

Ist sehr einfach:
Code:
' Einfache Schleifen-Stoppuhr
t1! = TIMER
' hier Deine bisherige Schleife
WHILE INKEY$ = ""
WEND
t2! = TIMER
PRINT "Zeit: "; t2! - t1!; " Sekunden"

Hinweis: Ist nicht rollover-tauglich über Mitternacht.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
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: 06.03.2005, 19:18    Titel: Antworten mit Zitat

Hallo

Code:
ta = TIMER
DO: LOOP UNTIL INKEY$ = CHR$(27)
PRINT TIMER-ta; "Sekunden"


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



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

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

Hallo!

Falls du dies nicht gewusst hast, TIMER liefert die Sekunden nach Mitternacht zurück.
Das Problem ist, dass nach Mitternacht TIMER wieder auf Null gesetzt wird.
Hier eine Variante mit TIME$:

Code:

Seconds& = 0
CLS
PRINT " Bitte mit Escape beenden!"
DO
 WHILE TIME$ = T$: WEND
 T$ = TIME$
 Seconds& = Seconds& + 1
LOOP UNTIL INKEY$ = CHR$(27)
PRINT "Die Schleife lief "; RTRIM$(LTRIM$(STR$(Sconds&))); " Sekunden."


jb
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: 06.03.2005, 21:39    Titel: Antworten mit Zitat

Hallo

Wenn's unbedingt "mitternachtsfest" sein muss dann vielleicht auch so:

Code:
tstart = TIMER
DO: LOOP UNTIL INKEY$ = CHR$(27)
tende = TIMER
zeit = tende - tstart
IF zeit < 0 THEN zeit = zeit + 86400
PRINT zeit; "Sekunden"


läuft aber maximal 24 Std. lang richtig...

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



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 06.03.2005, 21:58    Titel: Antworten mit Zitat

Hehe...

Meine obige Variante war aber auch "mitternachtsfest", und hatte
3-4 Variablen weniger cool

jb
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: 06.03.2005, 22:14    Titel: Antworten mit Zitat

jb hat Folgendes geschrieben:
Hehe...

Meine obige Variante war aber auch "mitternachtsfest", und hatte
3-4 Variablen weniger cool

jb


Na ja - eher zwei. Dafür sind bei deiner Version bis zu 2 Sekunden Fehler möglich...

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



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 06.03.2005, 22:22    Titel: Antworten mit Zitat

Jaja, aber was sind schon 10 Sekunden auf 48 Stunden?
Außerden kann man den Programmstart um
Code:

DO: LOOP UNTIL TIMER = FIX(TIMER)

ergänzen. Dann ist der Fehler auch weg...

jb
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: 06.03.2005, 22:53    Titel: Antworten mit Zitat

jb hat Folgendes geschrieben:
Jaja, aber was sind schon 10 Sekunden auf 48 Stunden?
Außerden kann man den Programmstart um
Code:

DO: LOOP UNTIL TIMER = FIX(TIMER)

ergänzen. Dann ist der Fehler auch weg...

jb


Ja, denn dann geht fast garnichts mehr. Der TIMER hat eine beschränkte Auflösung. Das sein Wert gerade mal eine ganze Zahl ist, kommt nur in unregelmässigen Abständen vor. Dann lieber ein paar Variablen mehr lächeln

Wo stand denn in der Frage was von langer Laufzeit? Vielleicht ist ja eher Genauigkeit gefragt z.B. für einen Reaktionszeit-Messer oder so.

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



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

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

Skilltronic hat Folgendes geschrieben:

Wo stand denn in der Frage was von langer Laufzeit?

Nicht direkt.
Skilltronic hat Folgendes geschrieben:

läuft aber maximal 24 Std. lang richtig...

Außerdem war von Mitternachtsfestigkeit die Rede.

OK. Für kleinere Intervalle ist wohl deine Variante die bessere.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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