Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Tiedostoja sekunnissa (QBasic)

gamehouse [26.03.2008 17:55:03]

#

Minulla on ongelma. Olen tehnyt pienen koodin, jonka pitäisi mitata, kuinka monta tiedostoa kone tallentaa sekunnissa. Koodi mittaa kyllä tiedostojen määrän, ja kaikki muu toimii, mutta miten saisin loopin pyörimään vain sekunnin? Olen kokeillut toteuttaa asian näin:

DIM FILE AS INTEGER

DO
AIKA = TIMER
FILE = FREEFILE
OPEN "FILE.FIL" FOR OUTPUT AS #FILE
PRINT #FILE, "."
CLOSE #FILE
LUKU = LUKU + 1
KILL "FILE.FIL"
PRINT AIKA
LOOP UNTIL AIKA = AIKA + 1 OR INKEY$ = CHR$(27)
PRINT LUKU; " FILES BY SECOND"

Tuo vain ei toimi. Miksi? Ja miten se toimisi?

zacura [26.03.2008 18:12:35]

#

gamehouse kirjoitti:

LOOP UNTIL AIKA = AIKA + 1 OR INKEY$ = CHR$(27)

Vika on siinä että AIKA muuttuja ei koskaan voi olla sama kun AIKA lisättynä yhdellä.

Hakemasi toteutus on seuraava:

LOOP UNTIL TIMER = AIKA + 1 OR INKE$ = CHR$(27)

Taikka siistimpi olisi muuttaa tuonne alkuun:

AIKA = TIMER+1
...
LOOP UNTIL TIMER = AIKA OR INKE$ = CHR$(27)

Antti Laaksonen [26.03.2008 18:19:03]

#

Rivi

AIKA = TIMER

on syytä suorittaa ennen silmukan aloitusta.

Minä ehkä toteuttaisin ehdon näin:

LOOP UNTIL TIMER >= AIKA + 1 OR INKEY$ = CHR$(27)

Nimittäin TIMER-funktiota ei luultavasti kutsuta juuri silloin, kun sen arvo on tasan sekunnin suurempi kuin tallennettu aika.

gamehouse [26.03.2008 18:58:51]

#

Kiitos paljon! Nyt sain systeemin toimimaan! ;)

zacura [26.03.2008 20:15:14]

#

Ääh, noin käy kun kiireessä vastaa. Hyvä että Antti antoi toimivan ratkaisun.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta