Jednostavno rečeno datoteka je binarni niz neke vrste. U Delphi, postoje tri razreda datoteka: kucano, tekstno i netipično. Upisane datoteke su datoteke koje sadrže podatke određene vrste, poput dvostrukog, cjelobrojnog ili prethodno definiranog prilagođenog tipa zapisa. Tekstualne datoteke sadrže čitljive ASCII znakove. Netipične datoteke koriste se kada želimo datoteci nametnuti najmanju moguću strukturu.
Upisane datoteke
Dok se tekstualne datoteke sastoje od redaka završenih s CR / LF (#13#10) kombinacija, tipkane datoteke sastoje se od podataka preuzetih iz određene vrste podataka.
Na primjer, sljedeća deklaracija stvara vrstu zapisa zvanu TMember i niz TMember zapisa varijabli.
tip
TMember = snimiti
Ime: niz[50];
E-mail:
niz[30];
Postova: LongInt;
kraj;
var članovi: red[1..50] od TMember;
Prije nego što možemo napisati podatke na disk, moramo deklarirati varijablu vrste datoteke. Sljedeći redak koda proglašava varijablu F datoteke.
var F: spis od TMember;
Napomena: Za stvaranje tipkane datoteke u Delphiju koristimo sljedeće sintaksa:
var SomeTypedFile: spis od SomeType
Osnovni tip (SomeType) za datoteku može biti skalarni tip (poput Double-a), vrsta matrice ili tip zapisa. To ne bi trebao biti dugi niz, dinamički niz, klasa, objekt ili pointer.
Da bismo započeli raditi s datotekama iz Delphija, moramo povezati datoteku na disku s varijablom datoteke u našem programu. Za stvaranje ove veze moramo koristiti AssignFile postupak za pridruživanje datoteke na disku varijabli datoteke.
AssignFile (F, 'Members.dat')
Jednom kada se uspostavi veza s vanjskom datotekom, datotečnu varijablu F mora se otvoriti za pripremu za čitanje i pisanje. Pozivamo postupak Poništavanje radi otvaranja postojeće datoteke ili Prepiši za stvaranje nove datoteke. Kad program dovrši obradu datoteke, datoteku je potrebno zatvoriti primjenom postupka CloseFile. Nakon što se datoteka zatvori, pridružena se vanjska datoteka ažurira. Promjena datoteke tada se može povezati s drugom vanjskom datotekom.
Općenito, uvijek bi trebali koristiti rukovanje izuzetkom; pri radu s datotekama mogu se pojaviti mnoge pogreške. Na primjer: ako nazovemo CloseFile za datoteku koja je već zatvorena, Delphi izvještava o I / O pogrešci. S druge strane, ako pokušamo zatvoriti datoteku, ali još uvijek nismo pozvali AssignFile, rezultati su nepredvidljivi.
Zapišite u datoteku
Pretpostavimo da smo napunili niz članova Delphija s njihovim imenima, e-mailovima i brojem postova, a ove podatke želimo pohraniti u datoteku na disku. Sljedeći dio koda će uspjeti:
var
F: spis od TMember;
i: cijeli broj;
početi
AssignFile (F, 'members.dat');
Prepisati (F);
probati
za j: = 1 do 50 čini
Pišite (F, Članovi [j]);
konačno
ZatvoriFile (F);
kraj;kraj;
Čitanje iz datoteke
Za preuzimanje svih podataka iz datoteke 'members.dat' koristili bismo sljedeće kodirati:
var
Član: TMember
F: spis od TMember;početi
AssignFile (F, 'members.dat');
Resetiranje (F);
probati
dok ne Eof (F) započeti
Pročitajte (F, član);
{DoSomethingWithMember;}
kraj;
konačno
ZatvoriFile (F);
kraj;kraj;
Bilješka: Eof je funkcija provjere EndOfFile. Ovu funkciju koristimo kako bismo bili sigurni da ne pokušavamo čitati izvan kraja datoteke (izvan posljednjeg pohranjenog zapisa).
Traženje i pozicioniranje
Datotekama se obično pristupa uzastopno. Kada se datoteka čita pomoću standardnog postupka Čitanje ili pisanje pomoću standardne procedure Write, trenutni položaj datoteke prelazi na sljedeću numerički uređenu komponentu datoteke (sljedeći zapis). Utipkanim datotekama može se pristupiti i nasumično putem standardnog postupka Seek koji pomiče trenutni položaj datoteke na zadanu komponentu. FilePos i Veličina datoteke funkcije se mogu koristiti za određivanje trenutnog položaja datoteke i trenutne veličine datoteke.
{Vrati se na početak - prvi zapis}
Traži (F, 0);
{idite na 5. zapis}
Traži (F, 5);
{Skoči na kraj - "nakon" posljednjeg zapisa}
Traži (F, Veličina datoteke (F));
Promjena i ažuriranje
Upravo ste naučili pisati i čitati čitav niz članova, ali što ako sve što želite jest potražiti deseti član i promijeniti e-mail? Sljedeći postupak čini upravo to:
postupak Promijeni e-mail(const RecN: cijeli broj; const Novi e-mail: niz) ;var DummyMember: TMember;početi
{dodijeliti, otvoriti, blok za upravljanje iznimkama}
Traži (F, RecN);
Pročitajte (F, DummyMember);
DummyMember. E-adresa: = NewEMail;
{čitanje prelazi na sljedeći zapis, moramo
vratite se na izvorni zapis, a zatim napišite}
Traži (F, RecN);
Pišite (F, DummyMember);
{zatvori datoteku}kraj;
Dovršavanje zadatka
To je to - sada imate sve što je potrebno za izvršavanje zadatka. Na disk možete upisati informacije članova, možete ih pročitati natrag, a neke podatke (primjerice e-poštu) možete promijeniti i u "sredini" datoteke.
Važno je da ta datoteka nije an ASCII datoteka, ovako izgleda blokčić za bilješke (samo jedan zapis):
.Delphi Vodič g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..