În plus, fișierele text sunt legate de structurile secvențiale de acces, iar fișierele binare sunt directe. Aceasta înseamnă că, în orice moment, puteți accesa orice, nu doar elementul curent al fișierului binar.
Fișiere tipărite
Variabilele tipurilor de date structurate (cu excepția șirului) nu pot fi citite dintr-un fișier text. De exemplu, dacă trebuie să introduceți din fișierul text datele pentru completarea informațiilor jucăriilor despre jucăriile disponibile pe piață (numele produsului, prețul produsului și intervalul de vârstă pentru care este destinată jucăria):
tip jucărie = nume de înregistrare: șir [20]; preț: real;
atunci ați scrie următorul cod:
c: char; i, j, min, max: întreg;
a: matrice [1..100] de jucărie;
începeți atribuirea (f, intrare); resetați (f);
pentru i: = 1 până la 100 dacă nu eof (f)
apoi cu un [i] face
(f, nume, preț, min, max); vârstă: = [];
pentru j: = min până la vârsta maximă: = vârsta + [j];
După cum puteți vedea, o astfel de interpretare este foarte incomodă și laborioasă.
Modul de ieșire din această situație este de a oferi fișiere tipizate - elementele lor se pot referi la orice tip de date de bază sau structurat. Singura restricție: toate elementele trebuie să fie de același tip. Acest inconvenient aparent este
Descrierea fișierelor tipizate
În secțiunea var, există variabile de fișier destinate să lucreze cu fișierele tipizate. sunt descrise după cum urmează:
var <файловая_перем>: fișierul de <тип_элементов_файла>;
Nici o variabilă de fișier nu poate fi specificată de o constantă.
Atribuirea unui fișier tipărit
De acum până la sfârșitul secțiunii, sub cuvântul "fișier" se înțelege "fișierul binar tipărit" (cu excepția cazului în care, bineînțeles, dacă nu se specifică altfel).
Atribuiți (f, '<имя_файла>„); este folosit pentru a stabili o conexiune între variabila fișierului f și numele fișierului pentru care va răspunde această variabilă.
Șirul " <имя_файла> "poate conține calea completă la fișier. Dacă nu este specificată nici o cale, fișierul este considerat a fi localizat în același director ca modulul executabil al programului.
Deschiderea și închiderea unui fișier tastat
În funcție de acțiunile pe care programul dvs. le va efectua cu deschiderea fișierului, este posibilă dubla deschidere:
resetați (f); - deschiderea unui fișier pentru citirea informațiilor din el și în același timp pentru scrierea acestuia (dacă nu există un astfel de fișier, încercarea de deschidere va provoca o eroare). Aceeași comandă servește pentru a readuce pointerul la începutul fișierului;
rescrie (f); - deschiderea unui fișier pentru a-i scrie informații; dacă un astfel de fișier nu există, acesta va fi creat; Dacă există deja un fișier cu acest nume, toate informațiile conținute în acesta vor dispărea.
Închideți fișierele tipizate închise (f). comun pentru toate tipurile de fișiere.
Citirea dintr-un fișier tipărit
Citirea dintr-un fișier deschis pentru citire se face cu comanda read (). Mai întâi, numele variabilei de fișier este specificat în paranteze, iar apoi lista de intrări 1):
tip jucărie = nume de înregistrare: șir [20]; preț: real;
var f: fișier de jucărie;
a: matrice [1..100] de jucărie; începe
pentru i: = 1 la 100 nu
dacă nu eof (f) apoi citiți (f, a [i]); închide (f);
Căutați într-un fișier tipărit
Suntem deja familiarizați cu funcția eof (f: file): booleanul raportează sfârșitul atins al fișierului. Toate celelalte funcții "end-of-search" (eoln (), Seekeof () și seekeoln ()), care sunt specifice fișierelor de text, nu pot fi aplicate fișierelor tipizate.
Dar există subrutine speciale care vă permit să lucrați cu fișierele tipizate ca și în cazul structurilor de acces direct:
1. Funcția filepos (f: fișier): longint va notifica poziția curentă a indicatorului în fișierul f. În cazul în care indică la sfârșitul fișierului, care conține N elemente, această funcție va avea ca rezultat N. Acest lucru este ușor de explicat: elementele de fișiere sunt numerotate de la zero, astfel încât ultimul element are un număr N-1. Și numărul N aparține, prin urmare, elementului "inexistent" - sfârșitul fișierului.
2. Dimensiunea fișierului funcție (f: fișier): longint va calcula lungimea fișierului f.
3. caută Procedură (f: fișier, n: longint) mută cursorul la fișierul f de la începutul înregistrării cu numărul N. Dacă se dovedește că n este mai mare decât lungimea reală a fișierului, indicatorul este mutat și capătul real al fișierului.
4. Rutina trunchiată (f: fișier) va trunchia "coada" fișierului f. Toate elementele de la fișierul curent până la sfârșitul fișierului vor fi șterse din acesta. De fapt, rescriere va semna doar „sfârșitul de fișier“, în locul în care indicatorul, și fizic „tăiat“ valorile rămân în locațiile lor inițiale - ele devin doar „orfani“.
Scrieți fișierul tastat
Salvați variabilele într-un fișier deschis pentru scriere. puteți folosi comanda write (). La fel ca în cazul citirii, prima este variabila de fișier, urmată de lista de ieșire:
scrie (f, a, b, c); - scrie variabilele a la fișierul f (anterior deschis pentru scriere prin comenzile rescrie (f) sau reset (f)). b. c.
Ieșirea la un fișier introdus poate avea numai variabile care corespund descrierii tipului de date. Constantele nesemnate și neinformate nu pot fi tipărite
Fișierele tipizate sunt tratate ca structuri de acces direct și secvențial. Aceasta înseamnă că înregistrarea este posibilă nu numai la sfârșitul fișierului, ci și în orice alt element al acestuia. Valoarea scrisă va suprascrie valoarea precedentă din acest element (vechea valoare va fi suprascrisă).
De exemplu, dacă doriți să înlocuiți al cincilea element al unui fișier cu valoarea stocată în variabila a. atunci trebuie redactat următorul fragment: