Preprosto povedano je datoteka binarno zaporedje neke vrste. V Delphi, obstajajo trije razredi mapa: vtipkani, besedilni in netipični. Vtipkane datoteke so datoteke, ki vsebujejo podatke določene vrste, kot so Double, Integer ali predhodno določena vrsta zapisa po meri. Besedilne datoteke vsebujejo berljive znake ASCII. Netipične datoteke se uporabljajo, kadar želimo datoteki naložiti čim manj strukture.
Vtipkane datoteke
Medtem ko so besedilne datoteke sestavljene iz vrstic, ki se končajo s CR / LF (#13#10) kombinacija, vtipkane datoteke so sestavljene iz podatkov, vzetih iz določene vrste podatkovne strukture.
Naslednja izjava na primer ustvari vrsto zapisa, imenovano TMember in niz spremenljivk zapisa TMember.
tip
TMember = zapis
Ime: vrvica[50];
E-naslov:
vrvica[30];
Objave: LongInt;
konec;
var Člani: matrika[1..50] od TMember;
Preden lahko podatke zapišemo na disk, moramo razglasiti spremenljivko vrste datoteke. Naslednja vrstica kode razglasi spremenljivko datoteke F.
var F: datoteko TMember;
Opomba: Če želite ustvariti vtipkano datoteko v Delphiju, uporabimo naslednje skladnja:
var SomeTypedFile: datoteko SomeType
Osnovni tip (SomeType) za datoteko je lahko skalarni (npr. Double), vrsta matrike ali vrsta zapisa. Ne sme biti dolg niz, dinamični niz, razred, predmet ali kazalec.
Za začetek dela z datotekami iz Delphija moramo datoteko na disku povezati s spremenljivko datotek v našem programu. Za ustvarjanje te povezave moramo uporabiti Dodeli datoteko postopek za povezavo datoteke na disku s spremenljivko datoteke.
AssignFile (F, 'Members.dat')
Ko je vzpostavljena povezava z zunanjo datoteko, je treba spremeniti datoteko spremenljivko F, da jo lahko pripravimo za branje in pisanje. Postopek Ponastavitev pokličemo, da odpremo obstoječo datoteko, ali Prepiši, da ustvari novo datoteko. Ko program zaključi obdelavo datoteke, jo je treba zapreti po postopku CloseFile. Ko je datoteka zaprta, se njena zunanja datoteka posodobi. Spremenljivko datoteke lahko nato povežete z drugo zunanjo datoteko.
Na splošno bi morali vedno uporabljati ravnanje z izjemami; pri delu z datotekami se lahko pojavijo številne napake. Na primer: če za datoteko, ki je že zaprta, pokličemo CloseFile, Delphi sporoči napako V / I. Po drugi strani pa, če poskušamo zapreti datoteko, vendar še nismo poklicali AssignFile, so rezultati nepredvidljivi.
Napišite v datoteko
Recimo, da smo napolnili niz članov Delphija z njihovimi imeni, e-poštnimi sporočili in številom objav ter želimo te podatke shraniti v datoteko na disku. Naslednji del kode bo delo:
var
F: datoteko TMember;
i: celo število;
začeti
AssignFile (F, 'members.dat');
Prepiši (F);
poskusi
za j: = 1 do 50 stori
Napišite (F, Člani [j]);
končno
ZapriFile (F);
konec;konec;
Preberi iz datoteke
Za pridobitev vseh informacij iz datoteke 'members.dat' bi uporabili naslednje Koda:
var
Član: TMember
F: datoteko TMember;začeti
AssignFile (F, 'members.dat');
Ponastavitev (F);
poskusi
medtem ko ne Eof (F) začeti
Preberi (F, član);
{DoSomethingWithMember;}
konec;
končno
ZapriFile (F);
konec;konec;
Opomba: Eof je funkcija preverjanja EndOfFile. S to funkcijo poskrbimo, da ne poskušamo brati dlje od konca datoteke (onkraj zadnjega shranjenega zapisa).
Iskanje in določanje položaja
Do datotek se običajno dostopa zaporedno. Ko se datoteka prebere po standardnem postopku Branje ali zapisovanje po standardnem postopku Write, trenutni položaj datoteke preide na naslednjo številčno razvrščeno komponento datoteke (naslednji zapis). Do vtipkanih datotek lahko dostopate tudi naključno s pomočjo standardnega postopka Seek, ki premakne trenutni položaj datoteke na določeno komponento. The FilePos in Velikost datoteke funkcije lahko uporabite za določitev trenutnega položaja datoteke in trenutne velikosti datoteke.
{vrni se na začetek - prvi zapis}
Iščite (F, 0);
{pojdite na 5. zapis}
Iščite (F, 5);
{Skoči do konca - "za" zadnji zapis}
Iščite (F, velikost datoteke (F));
Spremenite in posodobite
Pravkar ste se naučili pisati in brati celoten niz članov, kaj pa, če želite le poiskati 10. člana in spremeniti e-pošto? Naslednji postopek naredi natanko tako:
postopek ChangeEMail (konst RecN: celo število; konst Nova elektronska pošta: vrvica) ;var DummyMember: TMember;začeti
{dodelitev, odprt, blok za obdelavo izjem}
Iščite (F, RecN);
Preberi (F, DummyMember);
DummyMember. E-pošta: = NewEMail;
{branje se premakne na naslednji zapis, moramo
vrnite se na prvotni zapis in nato napišite}
Iščite (F, RecN);
Pišite (F, DummyMember);
{close file}konec;
Dokončanje naloge
To je to - zdaj imate vse, kar potrebujete za opravljanje svoje naloge. Podatke o članih lahko napišete na disk, jih lahko preberete nazaj, nekatere podatke (na primer e-pošto) pa lahko celo spremenite v "sredino" datoteke.
Pomembno je, da ta datoteka ni Datoteka ASCII, takole izgleda Beležnica (samo en zapis):
.Delphi Vodnik g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..