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?
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)
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.
Kiitos paljon! Nyt sain systeemin toimimaan! ;)
Ääh, noin käy kun kiireessä vastaa. Hyvä että Antti antoi toimivan ratkaisun.
Aihe on jo aika vanha, joten et voi enää vastata siihen.