Tiedostot : komennot

SEEKFILE


   KUVAUS

Joka kerta kun tiedostosta luetaan tai tiedostoon kirjoitetaan, sen sisäinen tiedosto-osoitin muuttaa paikkaa (riippuen montako tavua tiedostoon kirjoitetaan). Kun tiedosto avataan, sen tiedosto-osoitin on aina alussa, nollassa (huom, ei yksi).

Tällä komennolla voit siirtää tiedosto-osoittimen paikkaa tiedostossa, ja asettaa seuraavan kohdan, johon tietoa kirjoitetaan tai tietoa luetaan. Huomaa, että laskuri lähtee nollasta, mikä on tiedoston ensimmäinen paikka.

Käytä tätä komentoa tiedoston päivittämiseen. Tämä on erityisen hyvä tapa muuttaa tiedoston sisältöä ilman, että pitää kirjoittaa koko tiedosto tai sen loppu uusiksi. Huomaa, että kokonaisluvut (int) vievät 4 tavua tai 2 tavua (short). Desimaaliluvut puolestaan vievät myös 4 tavua. Merkkijonojen kanssa pitää olla tarkkana, koska niillä ei ole vakiopituutta.

Jos tiedosto sisältää vain 4 tavun kokonaislukuja, pääset käsiksi esim. 7. lukuun komentamalla SeekFile tiedosto, 24 (koska 4*7-4=24).

Käytä OpenToEdit-funktiota tiedoston avaamiseen, jos käytät SeekFileä tai FileOffsetia.

Komento on tarkoitettu edistyneemmille käyttäjille. Sen hyöty tavalliselle peliohjelmoijalle jäänee vähäiseksi.

   KÄYTTÖ
SEEKFILE tiedosto, paikka

  • tiedosto = Tiedostomuuttuja.
  • paikka = Uusi paikka tiedostossa. Lähtee nollasta. Kokonaisluku.

  • Katso myös: OPENTOREAD, OPENTOWRITE, OPENTOEDIT

       ESIMERKKI
    'open the file for output and write 10 integers to it
    f=OpenToWrite("Media\temp.dat")
        For i=1 To 10
            WriteInt f,i
        Next i
    CloseFile f

    '- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -

    'open the file for editing
    f=OpenToEdit("Media\temp.dat")
        'replace the 6th Integer with a New value
        SeekFile f, 4*5
        WriteInt f,12345
    CloseFile f

    '- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -

    'open the file for input and print all integers from it
    f=OpenToRead("Media\temp.dat")
        For i=1 To 10
            val=ReadInt(f)
            Text 10,i*12, val
        Next i
    CloseFile f

    DrawScreen

    WaitKey

    <<TAKAISIN