Yksinkertaisesti sanottuna tiedosto on binaarinen sekvenssi jonkin tyyppisiä. Sisään Delfoi, on kolme luokkaa tiedosto: kirjoitettu, teksti ja kirjoittamaton. Typitetyt tiedostot ovat tiedostoja, jotka sisältävät tietyn tyyppisiä tietoja, kuten Tupla-, Kokonaisluku tai aiemmin määritelty mukautettu tietuetyyppi. Tekstitiedostot sisältävät luettavissa olevia ASCII-merkkejä. Kirjoittamattomia tiedostoja käytetään, kun haluamme asettaa tiedostolle mahdollisimman pienen rakenteen.
Kirjoitetut tiedostot
Vaikka tekstitiedostot koostuvat riveistä, jotka on päätetty CR / LF (#13#10) yhdistelmä, kirjoitetut tiedostot koostuvat tietyn tyyppisestä tietorakenteesta otetuista tiedoista.
Esimerkiksi seuraava ilmoitus luo tietuetyypin nimeltä TMember ja joukon TMember-tietuemuuttujia.
tyyppi
TMember = ennätys
Nimi: jono[50];
Sähköposti:
jono[30];
Viestit: LongInt;
pää;
var Jäsenet: ryhmä[1..50] of TMember;
Ennen kuin voimme kirjoittaa tiedot levylle, meidän on ilmoitettava tiedostotyypin muuttuja. Seuraava koodirivi ilmoittaa F-tiedostomuuttujan.
var F: tiedosto TMember;
Huomaa: Luodaksesi tyypillinen tiedosto Delphiin, käytämme seuraavia syntaksi:
var SomeTypedFile: tiedosto sometype
Tiedoston perustyyppi (SomeType) voi olla skalaarityyppi (kuten Double), matriisityyppi tai tietuetyyppi. Sen ei pitäisi olla pitkä merkkijono, dynaaminen taulukko, luokka, objekti tai osoitin.
Aloittaaksesi Delphistä tulevien tiedostojen käsittelemisen, meidän on linkitettävä levyllä oleva tiedosto ohjelman muuttujaan. Tämän linkin luomiseen meidän on käytettävä AssignFile menettely levyn tiedoston liittämiseksi tiedostomuuttujaan.
AssignFile (F, 'Members.dat')
Kun assosiaatio ulkoisen tiedoston kanssa on luotu, tiedostomuuttuja F on ”avattava” sen valmistelemiseksi lukemista ja kirjoittamista varten. Kutsumme Reset-menettelytapaa avataksesi olemassa olevan tiedoston tai Kirjoita uudelleen luodaksesi uuden tiedoston. Kun ohjelma viimeistelee tiedoston käsittelyn, tiedosto on suljettava käyttämällä CloseFile-menettelyä. Kun tiedosto on suljettu, siihen liittyvä ulkoinen tiedosto päivitetään. Tiedostomuuttuja voidaan sitten liittää toiseen ulkoiseen tiedostoon.
Yleensä meidän tulisi aina käyttää poikkeusten käsittely; tiedostojen kanssa työskennellessä voi syntyä monia virheitä. Esimerkiksi: jos kutsumme CloseFile-tiedostoa jo suljettuun tiedostoon, Delphi ilmoittaa I / O-virheestä. Toisaalta, jos yritämme sulkea tiedoston, mutta emme ole vielä kutsuneet AssignFile-tiedostoa, tulokset ovat arvaamattomia.
Kirjoita tiedostoon
Oletetaan, että olemme täyttäneet joukon Delphin jäseniä heidän nimillään, sähköpostilla ja viestimäärillä ja haluamme tallentaa nämä tiedot levylle tiedostoon. Seuraava koodi suorittaa työn:
var
F: tiedosto TMember;
i: kokonaisluku;
alkaa
AssignFile (F, 'jäsenet.dat');
Kirjoittaa uudelleen (F);
yrittää
varten j: = 1 että 50 tehdä
Kirjoita (F, jäsenet [j]);
vihdoin
CloseFile (F);
pää;pää;
Lue tiedostosta
Kaikkien tietojen hakemiseksi 'jäsen.dat'-tiedostosta käytämme seuraavaa koodi:
var
Jäsen: TMember
F: tiedosto TMember;alkaa
AssignFile (F, 'jäsenet.dat');
Palauta (F);
yrittää
kun taas ei Eof (F) aloitetaan
Lue (F, jäsen);
{DoSomethingWithMember;}
pää;
vihdoin
CloseFile (F);
pää;pää;
Huomautus: Eof on EndOfFile-tarkistustoiminto. Käytämme tätä toimintoa varmistaaksemme, että emme yritä lukea tiedoston lopun jälkeen (viimeisen tallennetun tietueen jälkeen).
Etsiminen ja paikannus
Tiedostoihin pääsy tapahtuu yleensä peräkkäin. Kun tiedosto luetaan vakioproseduurilla Lue tai kirjoitetaan käyttämällä standardimenetelmää Write, nykyinen tiedoston sijainti siirtyy seuraavaan numeerisesti järjestettyyn tiedostokomponenttiin (seuraava tietue). Tyypillisiä tiedostoja voidaan käyttää myös satunnaisesti standardimenettelyn Seek kautta, joka siirtää nykyisen tiedoston sijainnin määritettyyn komponenttiin. FilePos ja Tiedoston koko toimintojen avulla voidaan määrittää nykyinen tiedoston sijainti ja nykyinen tiedostokoko.
{palata alkuun - ensimmäinen levy}
Etsii (F, 0);
{siirry viidenteen ennätykseen}
Etsii (F, 5);
{Hyppää loppuun - "viimeisen levyn jälkeen"}
Etsii (F, FileSize (F));
Muuta ja päivitä
Olet juuri oppinut kirjoittamaan ja lukemaan koko joukon jäseniä, mutta mitä jos haluat tehdä, on vain etsiä kymmenenteen jäseneen ja vaihtaa sähköposti? Seuraava toimenpide tekee juuri sen:
menettely Vaihda sähköposti(const RecN: kokonaisluku; const Uusi sähköposti: jono) ;var DummyMember: TMember;alkaa
{määritä, avaa, poikkeusten käsittelylohko}
Etsii (F, RecN);
Lue (F, DummyMember);
DummyMember. Sähköposti: = NewEMail;
{lue siirtyy seuraavaan levyyn, meidän täytyy
palaa alkuperäiseen tietueeseen ja kirjoita sitten}
Etsii (F, RecN);
Kirjoita (F, DummyMember);
{sulje tiedosto}pää;
Tehtävän suorittaminen
Siinäpä - nyt sinulla on kaikki mitä tarvitset tehtävän suorittamiseen. Voit kirjoittaa jäsenten tiedot levylle, voit lukea ne takaisin, ja voit jopa muuttaa joitain tietoja (esimerkiksi sähköposti) tiedoston "keskellä".
Tärkeää on, että tämä tiedosto ei ole ASCII-tiedosto, näin se näyttää Muistilehtiö (vain yksi tietue):
.Delphi Guide g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..