Tein ohjelman, jolla voin seurata tietokoneellaoloaikaani. Ohjelma mittaa sekunnit. 60 sekuntia vaihtuu yhteen minuuttiin ja 60 sekuntia vaihtuu yhteen tuntiin. Minuutit toimivat moitteettomasti, tunteja en jaksanut testata, mutta sekunneissa on joku ongelma, sillä ne e i v ä t tallennu AJAT.txt-tiedostoon. Ne kyllä näkyvät ohjelmassa, mutteivät tallennu. Huomaako joku jonkin vian koodissa?
*** Huomio! Nyt alkaa koodi. main: CLS ON ERROR GOTO virhe 'jos ilmenee virheitä, siirrytään paikkaan "main" LOCATE 5, 2: PRINT "Kuinka paljon aikaa on kulutettu tietokoneella:" OPEN "ajat.txt" FOR INPUT AS #1 'avataan tiedosto "ajat.txt" luettavaksi DO 'aloitetaan tiedostonlukemissilmukka INPUT #1, tunnit, minuutit, sekunnit'määritellään tiedostossa oleva teksti muuttujiin piste ja piste$ PRINT "Tunnit: "; tunnit PRINT "Minuutit: "; minuutit PRINT "Sekunnit: "; sekuntit LOOP UNTIL EOF(1) = -1 'toistetaan silmukkaa, kunnes tiedosto on luettu loppuun CLOSE #1 tuntienmaara = 0 minuuttienmaara = 0 sekuntienmaara = 0 tunnitlaskenta = tunnit minuutitlaskenta = minuutit sekunnitlaskenta = sekuntit PRINT "Paina vissiin ykköstä." PRINT "Voit poistua ohjelmasta painamalla 5." INPUT nimi IF nimi = 5 THEN END GOTO laskenta laskenta: CLS DO LOCATE 3, 10 PRINT "AIKA: "; tuntienmaara; ":"; minuuttienmaara; ":"; sekuntienmaara; " " LOCATE 4, 10 PRINT "Aika yhteensä: "; tunnitlaskenta; ":"; minuutitlaskenta; ":"; sekunnitlaskenta; " " SLEEP 1 sekuntienmaara = sekuntienmaara + 1 IF sekuntienmaara = 60 THEN sekuntienmaara = 0 minuuttienmaara = minuuttienmaara + 1 END IF IF minuuttienmaara = 60 THEN minuuttienmaara = 0 tuntienmaara = tuntienmaara + 1 END IF tunnitlaskenta = tunnit + tuntienmaara minuutitlaskenta = minuutit + minuuttienmaara sekunnitlaskenta = sekunnit + sekuntienmaara LOOP UNTIL INKEY$ = CHR$(13) GOTO tallenna virhe: CLS BEEP COLOR 12 PRINT "Tapahtui virhe. Tiedostoa '' ajat.txt'' ei pystytty lataamaan." PRINT "Tiedostoa ei välttämättä ole, tai se on väärässä kansiossa." PRINT "On myös mahdollista, että ohjelmassa on typo..." PRINT "Ole hyvä, ja käynnistä ohjelma uudestaan." SLEEP END tallenna: tunnit = tunnit + tuntienmaara minuutit = minuutit + minuuttienmaara sekunnit = sekunnit + sekunttienmaara OPEN "ajat.txt" FOR OUTPUT AS #2 PRINT #2, tunnit, minuutit, sekunnit CLOSE #2 tuntienmaara = 0 minuuttienmaara = 0 sekuntienmaara = 0 PRINT "Huitaise escapea" DO LOOP UNTIL INKEY$ = CHR$(27) nimi = 0 GOTO main
Sitten toivotaan, että muistin tuon
-
jutun oikein... muokkaan jos en muistanut.
EDIT: ai niin, tuo nimi juttu on ohjelman edellisestä versiosta, siihen ei tarvitse kiinnittää mitään huomiota, ellei vika löydykin juuri siitä?
Olet kirjoittanut muuttujan sekuntienmaara kahdella teellä tuossa tiedoston kirjoitusvaiheessa. Johtunee virheesi siitä?
Lainausmerkin voi muuten kirjoittaa PRINT:llä näytölle tulostamalla merkin CHR$(34).
Ahaa, kiitos enpä huomannut. (väärä kirjoitusasu)
Mullaki on tallennukses yks ongelma: Miten voi tallentaa tekstiä niin että ei tule lainausmerkkejä sen ympärille?
Käytä PRINT-komentoa äläkä WRITE-komentoa, niin ei tule lainausmerkkejä.
Antti Laaksonen kirjoitti:
Käytä PRINT-komentoa äläkä WRITE-komentoa, niin ei tule lainausmerkkejä.
Mä en oo tiennykkää että sillä voi tallentaa tierostoon.
Minä taas en ole kuullutkaan mistään WRITEsta. Aina sitä jotakin uutta oppii...
Aihe on jo aika vanha, joten et voi enää vastata siihen.