Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: (QB) Ongelma tallennuksessa

Chaosworm [02.11.2007 19:36:35]

#

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ä?

Cornix [02.11.2007 20:27:35]

#

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).

Chaosworm [03.11.2007 07:22:22]

#

Ahaa, kiitos enpä huomannut. (väärä kirjoitusasu)

Dude [03.11.2007 11:26:16]

#

Mullaki on tallennukses yks ongelma: Miten voi tallentaa tekstiä niin että ei tule lainausmerkkejä sen ympärille?

Antti Laaksonen [03.11.2007 13:52:28]

#

Käytä PRINT-komentoa äläkä WRITE-komentoa, niin ei tule lainausmerkkejä.

Dude [04.11.2007 15:53:33]

#

Antti Laaksonen kirjoitti:

Käytä PRINT-komentoa äläkä WRITE-komentoa, niin ei tule lainausmerkkejä.

Mä en oo tiennykkää että sillä voi tallentaa tierostoon.

Chaosworm [14.11.2007 16:31:18]

#

Minä taas en ole kuullutkaan mistään WRITEsta. Aina sitä jotakin uutta oppii...

Vastaus

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

Tietoa sivustosta