Cum se configurează smartphone-uri și PC-uri. Portal informativ

Fișiere binare. Fisier binar

Exemplele pe care le-am luat în considerare până acum au demonstrat intrarea/ieșirea formatată a informațiilor în fișiere. Este recomandabil să utilizați fișierul formatat de intrare/ieșire a numerelor numai atunci când acestea sunt mici și mici ca număr și, de asemenea, atunci când este necesar să oferiți posibilitatea de a vizualiza fișiere folosind instrumente non-software. Altfel, desigur, este mult mai eficient să folosiți I/O binare, în care numerele sunt stocate în același mod ca în OP-ul computerului, și nu sub formă de șiruri de caractere. Permiteți-mi să vă reamintesc că o valoare întreagă (int) sau reală (float) ocupă 4 octeți în memorie, o valoare dublă - 8 octeți și o valoare char - 1 octet. De exemplu, numărul 12345 dintr-un fișier text (formatat) este de 5 octeți, iar într-un fișier binar este de 4 octeți.

Fișiere binare, adică fișierele în care informațiile sunt stocate sub formă internă de prezentare sunt folosite pentru utilizare ulterioară de către software, nu pot fi vizualizate de non-software. Avantajul fișierelor binare este că, în primul rând, la citire/scriere, nu se pierde timpul cu conversia datelor din reprezentarea simbolică în internă și înapoi și, în al doilea rând, nu există pierderi de precizie a numerelor reale. Ca și în cazul intrării/ieșirii formatate, și în cazul intrării/ieșirii binare, pentru prelucrarea „corectă” a informațiilor din fișier, este necesar să se cunoască ce tipuri de date, cum și în ce secvență sunt scrise. un fișier binar, mai ales că vizualizarea unui fișier binar folosind un editor de text nu va face nimic.

Luați în considerare un exemplu care demonstrează scrierea elementelor întregi ale unui tablou dinamic într-un fișier binar și citirea lor din acest fișier.

#include

#include

#include

folosind namespace std;

cout<< "Vvedite kol-vo elementov celochisl. massiva: "; cin >> N;

int * mas = new int [N];

pentru (i = 0; i

cout<< " Vvedite " << i << "-i element: "; cin >> mas [i];

cout<< "\nIdet zapis dannyh v fail..." << endl;

ofstream fout ("c: \\ os \\ bin.dat", ios :: binar);// crea afară. flux binar

dacă (! fout) (cout<< "\n Oshibka otkrytiya faila!"; getch(); return 1; }

fout.write (reinterpret_cast (mas), N * sizeof (int));// scrieți matrice în fișier

fout.close ();// închide fluxul

cout<< "Dannye uspeshno zapisany!" << endl;

pentru (i = 0; i

ifstream fin ("c: \\ os \\ bin.dat", ios :: binar); // creează un flux pentru a citi fișierul

dacă (! fin) (cout<< "\n Oshibka otkrytiya faila!"; getch(); return 1; }

cout<< "Fail sodergit:" << endl;

fin.read (reinterpret_cast (mas), N * sizeof (int));// citește matricea din fișier

pentru (i = 0; i

getch (); returnează 0;

O atenție deosebită în acest program ar trebui acordată utilizării write () (metoda clasei ofstream) și read () (metoda clasei ifstream). Aceste funcții gândesc datele în termeni de octeți și sunt concepute pentru a transfera un număr specificat de octeți din memoria tampon de date într-un fișier și invers. Parametrii acestor funcții sunt adresa tamponului și lungimea acestuia în octeți.

Funcția write () este concepută pentru a scrie într-un fișier numărul de octeți specificat în al doilea parametru din cel specificat în primul parametru adrese tampon de date, iar funcția de citire () este pentru citirea datelor dintr-un fișier. Trebuie remarcat aici că aceste funcții operează numai pe un buffer de date de tip char. În acest sens, în acest program am folosit operatorul reinterpret_cast<> care convertește tamponul nostru de date de tip int (mas) într-un tampon de tip char.

Trebuie reținut că tipul de turnare cu ajutorul operatorului reinterpret_cast este necesar doar în cazurile în care primul parametru al funcțiilor scrie () și citit () nu este o matrice de caractere (la urma urmei, un caracter de tip char durează doar 1 octet).În plus, dacă este necesar să scrieți sau să citiți nu o matrice, ci variabile separate, atunci trebuie să utilizați un mecanism de referință (referință la adresa tamponului de date), de exemplu:

ofstream fout (nume fișier, ios :: aplicație | ios :: binar);

fout.write (reinterpret_cast (& cb), dimensiunea (float));

Acum este necesar să discutăm al doilea parametru al funcțiilor luate în considerare. În acest program, ca al doilea parametru, am folosit expresia N * sizeof (int), cu care am calculat numărul de octeți. De exemplu, dacă avem 5 elemente de matrice întregi, atunci numărul de octeți va fi 20. Funcția sizeof () returnează numărul de octeți alocați pentru tipul de date specificat ca parametru. De exemplu, dimensiunea ( int) va reveni 4.

Deci, programul prezentat în acest exemplu vă permite să scrieți date într-o formă binară în fișierul bin.dat și să le citiți din acest fișier binar. Mai mult, după citire, aceste date sunt convertite în tipul int, capătă structura unui tablou și orice operație poate fi efectuată cu aceasta.

Acum, imaginați-vă că trebuie să scrieți un program care vă permite să citiți date din fișierul bin.dat și știm doar că acest fișier conține elemente ale unui tablou întreg în formă binară. Numărul de elemente înregistrate ( N ) nu știm... Când creăm un program, nu avem dreptul să folosim o matrice constantă, adică. alocați-i memorie în etapa creării programului. Acest lucru va duce la un rezultat eronat. Deoarece o valoare prea mică a lui N va duce la faptul că nu toate elementele matricei sunt numărate, iar o valoare prea mare a lui N va duce la umplerea celulelor suplimentare cu valori aleatorii.

Luați în considerare un exemplu de program care vă permite să citiți elemente ale unei matrice întregi dintr-un fișier binar prin alocarea dinamică a memoriei și, pentru a demonstra realismul datelor citite, calculați suma acestora.

#include

#include

#include

folosind namespace std;

int N, i, sum = 0, dfb; // dfb - lungimea fișierului în octeți

ifstream fin ("c: \\ os \\ bin.dat", ios :: binar);

dacă (! fin) (cout<< "Oshibka otkrytiya faila!"; getch(); return 1; }

fin.seekg (0, ios :: end);// setează poziția de citire la sfârșitul fișierului (de la sfârșitul a 0 octeți)

dfb = fin.tellg ();// obțineți valoarea poziției de la sfârșitul fișierului (în octeți)

N = dfb / 4;// știind că un număr întreg are 4 octeți, calculează numărul de numere

int * arr = new int [N];// creează o matrice dinamică

fin.seekg (0, ios :: beg);// înainte de a citi datele, mutăm poziția curentă la începutul fișierului

fin.read (reinterpret_cast (arr), dfb);

cout<< "Iz faila schitano " << N << " elementov:" << endl;

pentru (i = 0; i

pentru (i = 0; i

cout<< "\n Ih summa = " << sum;

getch (); returnează 0;

Să luăm în considerare acest program în detaliu, în care am folosit activ funcțiile seekg () și tellg (), care sunt metode ale clasei ifstream. Trebuie remarcat aici că cu orice fișier atunci când este deschis, așa-numita poziție curentă de citire sau scriere este asociată... Când un fișier este deschis pentru citire, această poziție este setată implicit la începutul fișierului. Dar destul de des este necesar să controlați manual poziția pentru a putea citi și scrie, pornind de la o locație arbitrară din fișier. Funcțiile seekg () și tellg () vă permit să setați și să verificați indicatorul de citire curent, iar funcțiile seekp () și tellp () fac același lucru pentru pointerul de scriere.

Metoda seekg (1_parameter, 2_parameter) mută poziția curentă de citire din fișier cu numărul de octeți specificat în 1_parameter în raport cu locația specificată în 2_option. 2_parameter poate lua una dintre cele trei valori:

ios :: beg - de la începutul fișierului;

ios :: cur - din pozitia curenta;

ios :: end - de la sfârșitul fișierului.

Aici beg, cur și end sunt constante definite în clasa ios, iar simbolurile :: indică o operație de acces la această clasă. De exemplu, operatorul fin.seekg (-10, ios :: final); vă permite să setați poziția curentă de citire din fișier cu 10 octeți înainte de sfârșitul fișierului.

Acum să revenim la descrierea programului. Pe baza faptului că nu știm numărul de numere scrise în fișier, trebuie mai întâi să aflăm numărul de numere. Pentru a face acest lucru, folosind fin.seekg (0, ios :: end); trecem la sfârșitul fișierului și folosim funcția tellg () pentru a returna lungimea fișierului în octeți variabilei dfb. Funcția tellg () returnează poziția curentă a indicatorului în octeți. Deoarece știm lungimea unui număr întreg în octeți (4 octeți), este ușor să calculăm numărul de numere scrise în fișier, cunoscând lungimea fișierului în octeți ( N = dfb / 4;). După ce am aflat numărul de numere, creăm o matrice dinamică și trecem la începutul fișierului pentru a începe să citim datele folosind funcția de citire (). După ce numărul specificat de octeți de date (dfb) este transferat în bufferul de date (arr), datele citite în acest fel capătă structura unui tablou și devin pe deplin potrivite pentru orice fel de operații și transformări.

În exemplul de mai sus, opțiunea „cea mai lungă” este „b”: necesită 23 de octeți (21 de octeți pentru un șir și 2 octeți pentru un număr întreg). Pentru opțiunile „n” și „m”, sunt necesari 4 și, respectiv, 5 octeți (vezi tabel).

nume, articol editor Partea varianta

Fișiere binare

Fișierele binare stochează informații în forma în care acestea sunt reprezentate în memoria computerului și, prin urmare, sunt incomode pentru oameni. Privind într-un astfel de fișier, este imposibil să înțelegem ce este scris în el; nu poate fi creat sau corectat manual - într-un editor de text - etc. Cu toate acestea, toate aceste inconveniente sunt compensate de viteza de lucru cu datele.

În plus, fișierele text sunt structuri de acces secvențial, iar cele binare sunt structuri de acces direct. Aceasta înseamnă că în orice moment vă puteți referi la oricine, nu doar la elementul curent al fișierului binar.

Fișiere tastate

Variabilele tipurilor de date structurate (altele decât șirurile de caractere) nu pot fi citite dintr-un fișier text. De exemplu, dacă trebuie să introduceți date dintr-un fișier text pentru a completa înregistrarea jucăriilor cu informații despre jucăriile disponibile pentru vânzare (numele produsului, prețul produsului și intervalul de vârstă pentru care este destinată jucăria):

varsta: set de 0..18; (definit de limitele din fișier)

atunci trebuie să scrieți următorul cod:

c: char; i, j, min, max: întreg;

a: gamă de jucării;

începe atribuirea (f, intrare); resetare (f);

pentru i: = 1 până la 100 face dacă nu e din (f)

apoi cu un [i] do

începe readln (f, nume, preț, min, max); varsta: =;

pentru j: = min la max do age: = varsta + [j];

După cum puteți vedea, o astfel de citire element cu element este foarte incomodă și laborioasă.

Se oferă o cale de ieșire din această situație fișiere tastate- elementele lor pot fi de orice tip de date de bază sau structurate. Singura limitare este că toate articolele trebuie să fie de același tip. Acest inconvenient aparent este

o condiție indispensabilă pentru organizarea accesului direct la elementele unui fișier binar: ca și în cazul tablourilor, dacă lungimea fiecărei componente a structurii este cunoscută exact, atunci adresa oricărei componente poate fi calculată folosind o formulă foarte simplă:

<начало_структуры> + <номер_компонента>*<длина_компонента>

Descrierea fișierelor tastate

În secțiunea var, variabilele de fișier cu care sunt destinate să funcționeze fișiere tastate sunt descrise după cum urmează:

var<файловая_перем>: dosar de<тип_элементов_файла>;

Nicio variabilă de fișier nu poate fi constantă.

Scopul unui fișier tastat

Din acest moment și până la sfârșitul secțiunii, sub cuvântul „dosar” înțelegem „ fișier tip binar„(desigur, dacă nu se specifică altfel).

Echipă atribuie (f, "<имя_файла>"); servește la stabilirea unei conexiuni între variabila fișier f și numele fișierului de care va fi responsabilă această variabilă.

linia "<имя_файла>„poate conține calea completă către fișier. Dacă calea nu este specificată, fișierul este considerat a fi situat în același director cu modulul executabil al programului.

Deschiderea și închiderea unui fișier tastat

În funcție de acțiunile pe care programul dvs. va face cu fișierul deschis, acesta poate fi deschis în două moduri:

resetare (f); - deschiderea unui fișier pentru a citi informații din acesta și în același timp pentru a scrie în el (dacă un astfel de fișier nu există, încercarea de a-l deschide va provoca o eroare). Aceeași comandă este folosită pentru a returna un pointer la începutul fișierului;

rescrie (f); - deschiderea unui fișier pentru a scrie informații în el; dacă un astfel de fișier nu există, acesta va fi creat; dacă un fișier cu același nume există deja, toate informațiile conținute anterior în acesta vor dispărea.

Se închid fișiere tastate procedura de închidere (f), comună pentru toate tipurile de fișiere.

Citirea dintr-un fișier tastat

Citirea dintr-un fișier deschis pentru citire se face folosind comanda read (). Numele variabilei fișierului este indicat mai întâi între paranteze, urmat de lista de intrare1):

Doar variabilele declarației de tip corespunzătoare pot fi introduse dintr-un fișier, dar acest tip de date poate fi și structurat. Să spunem, dacă ne întoarcem la exemplul dat la începutul p..” Fișiere tastate„, va deveni evident că utilizarea de fișier tastatîn loc de text, va reduce semnificativ textul programului:

tip toy = nume de înregistrare: șir; pret: real;

varsta: set de 0..18; (date de limite)

var f: dosar de jucărie;

a: gamă de jucării; începe

atribui (f, intrare);

pentru i: = 1 până la 100 do

dacă nu eof (f), atunci citiți (f, a [i]); aproape (f);

Căutați într-un fișier tastat

Familia eof (f: fișier): funcția booleană raportează sfârșitul fișierului atins. Toate celelalte funcții de „găsire finală” (eoln (), seekeof (), andseekeoln ()) comune fișierelor text nu pot fi aplicate fișierelor tastate.

Dar există subrutine speciale care vă permit să lucrați fișiere tastate ca și în cazul structurilor cu acces direct:

1. Funcția filepos (f: file): longint va raporta poziția curentă a pointerului în fișierul f. Dacă indică la sfârșitul unui fișier care conține N elemente, atunci această funcție va returna rezultatul N. Acest lucru este ușor de explicat: elementele fișierului sunt numerotate începând de la zero, deci ultimul element este numerotat N-1. Iar numărul N aparține, astfel, unui element „inexistent” - un semn al sfârșitului fișierului.

2. Dimensiunea fișierului (f: fișier): funcția longint va calcula lungimea fișierului f.

3. Procedura de căutare (f: fișier, n: longint) va muta indicatorul din fișierul f la începutul înregistrării n. Dacă se dovedește că n este mai mare decât lungimea reală a fișierului, atunci indicatorul va fi mutat dincolo de sfârșitul real al fișierului.

4. Procedura truncate (f: file) va trunchia „coada” fișierului f: toate elementele de la curent până la sfârșitul fișierului vor fi eliminate din acesta. De fapt, doar caracteristica „sfârșitul fișierului” va fi rescrisă în locul în care indica indicatorul, iar valorile „decupate” fizic vor rămâne în aceleași locuri - vor deveni pur și simplu „fără proprietar”.

Scrierea într-un fișier tastat

Puteți salva variabile într-un fișier deschis pentru scriere folosind comanda write (). Ca și în cazul citirii, variabila fișier este specificată mai întâi, urmată de lista de ieșire:

scrieți (f, a, b, c); - scrieți în fișierul f (deschis anterior pentru scriere prin comenzi rerite (f) sau reset (f)) variabilele a, b, c.

Ieșire către fișier tastat sunt permise numai variabilele corespunzătoare descrierii tipului de date. Constantele fără nume și netipizate nu pot fi transmise

fișier tastat.

Fișiere tastate sunt considerate ca structuri atât de acces direct cât și secvenţial. Aceasta înseamnă că scrierea este posibilă nu numai până la sfârșitul fișierului, ci și în orice alt element al acestuia. Valoarea scrisă va suprascrie valoarea anterioară în acest element (vechea valoare va fi „suprascrisă”).

De exemplu, dacă trebuie să înlocuiți al cincilea element al fișierului cu valoarea stocată în variabila a, atunci ar trebui să scrieți următorul fragment de program:

caută (f, 5); (indicatorul va fi poziționat la începutul celui de-al 5-lea element)

scrie (f, a); (indicatorul va fi poziționat la începutul celui de-al 6-lea element)

Un fișier binar este orice fișier de pe computer. Toate informațiile de pe un computer și mediile aferente sunt înregistrate în biți (de unde și numele). Totuși, spre comparație, un fișier text poate fi citit în cititoarele corespunzătoare extensiei (cele mai simple – chiar și în Notepad), dar fișierul executabil nu poate. Și deși de fapt un fișier txt este același fișier binar, atunci când se vorbește despre problema deschiderii conținutului fișierelor binare, se referă la fișiere executabile, precum și la date comprimate.

Vei avea nevoie

  • - Programul Hex Edit.

Instrucțiuni

  • Descărcați programul Hex Edit pe hard disk - un editor de fișiere care reprezintă conținutul lor în formă binară. Deschideți programul făcând dublu clic pe fișierul de pornire. Acest software vă permite să citiți binare în timp real, să modificați conținutul, să adăugați propriile intrări și multe altele. Pentru a funcționa corect în acest mediu, trebuie să cunoașteți puțin despre conceptele generale ale binarelor.
  • Fereastra programului nu este mult diferită de editorul obișnuit: meniul familiar și panoul cu butoane, corpul fișierului editat, marcaje și bara de stare. Deschideți fișierul binar prin meniul Fișier sau făcând clic pe pictograma corespunzătoare din panou. Fișierul binar va apărea în fața dvs. ca șiruri de caractere cu cifre și litere. Nu confundați aceste caractere cu datele imprimabile din fișierele text. Ele pot fi editate și prin ștergerea simbolurilor, dar aceasta va șterge celulele cu date, bucăți din fișier.
  • Efectuați modificări la conținutul fișierului. Aplicația poate afișa părți importante ale fișierului pentru o căutare mai ușoară și are, de asemenea, configurație flexibilă a afișajului grafic al codului binar. Comutați vizualizarea conținutului în modul ASCII + IBM / OEM pentru a vedea codul de program al fișierului. Dacă introduceți linii greșite în fișier, este posibil ca acesta să nu funcționeze corect, provocând consecințe grave asupra sistemului de operare al computerului personal.
  • Salvați modificările. Dacă nu aveți experiență în editarea fișierelor în acest fel, fiți pregătit pentru ca fișierul să nu se deschidă și să refuze să funcționeze după efectuarea modificărilor. Cel mai probabil, veți strica câteva copii înainte de a termina treaba. Încercați să nu salvați toate modificările la fișierul original, astfel încât conținutul acestuia să rămână neschimbat.
  • Probabil ați întâlnit termenii „text” și „binar” înainte de a citi câteva articole despre fișiere. Și au decis că toate acestea sunt prea dificile pentru tine, nu o să-ți dai seama niciodată, așa că nu s-au adâncit în el, renunțând la el.

    Vom încerca să explicăm totul în cel mai simplu limbaj posibil, deoarece astfel de informații sunt utile pentru fiecare utilizator, chiar și pentru cei mai neexperimentați, deoarece sunt direct legate de elementele de bază ale securității computerului.

    Un pic de teorie

    Fișierul text conține caractere ASCII (abrevierea înseamnă American Standard Code for Information Interchange, ceva de genul „Standard american pentru codificare pentru schimbul de informații”).

    De fapt, ASCII este un tabel în care fiecărei litere, număr, semn de punctuație și diferiți „câini” cu „fulgi de zăpadă” (în sensul @ și *) sunt alocați câte un octet. Adică opt zerouri și unu (biți). În plus, desigur, caractere de control, cum ar fi întreruperile de rând.

    Un program pentru deschiderea fișierelor cu caractere ASCII convertește octeții în litere, numere și alte caractere imprimabile pe afișaj. Desigur, software-ul trebuie să înțeleagă acea parte a tabelului care corespunde limbii ruse, dar aceasta este deja o problemă de codificare.

    Într-un fișier binar, zerourile și unuurile sunt aranjate într-o secvență care nu este necesară pentru afișarea textelor (deși există unele, de exemplu, * doc). Și pentru ce, întrebați. Răspunsul este simplu: pentru orice altceva. Programe, filme, muzică, imagini - fiecare format are propriile sale principii structurale de organizare a datelor.

    Cuvântul „binar” în sine înseamnă „cu două componente”, „dublu”. Într-adevăr, doar două componente sunt clar definite - zero și unu, biți, „cărămizi” care alcătuiesc fișierul. Semnificația tuturor celorlalte se poate manifesta numai în timpul lansării (deschidere, redare).

    Partea inferioară a lumii digitale

    Puteți căuta în interiorul unui fișier binar folosind un program special - un editor HEX. (Din cuvântul Hexazecimal, care denotă un sistem numeric hexazecimal.) Un astfel de software arată octeții sub forma denumirilor lor HEX, localizați de fapt și sub forma unui tabel (matrice).

    De exemplu, octeții unei imagini JPEG, o imagine obișnuită sau o fotografie, în fereastra editorului vor fi afișați ca FF D8 FF 00 04 3A 29 și așa mai departe.

    Specialistul va înțelege că secvența de octeți FF D8 de la început indică faptul că avem de-a face cu JPEG. Și pentru nespecialiști, toate acestea nu sunt atât de interesante.

    De asemenea, puteți deschide un fișier text într-un editor HEX pentru a vedea ce octeți corespund unor anumite litere (caractere ASCII). Dar doar din curiozitate, tot nu are sens.

    Dar fișierele binare sunt uneori vizualizate în formă hexazecimală în scopuri destul de semnificative și specifice. De exemplu, specialiștii din laboratoarele antivirus caută astfel cod rău intenționat adăugat celui principal. Apropo, să trecem la problemele de securitate.

    Ce poate dăuna

    Fișierul text nu poate conține altceva decât caractere ASCII. Cu toate acestea, programele nu sunt doar binare, ci și constau din simbolurile de mai sus. Asta înseamnă scripturi, desigur.

    Cu alte cuvinte, fișierul * txt nu este infectat în principiu și nu reprezintă o amenințare. Și dacă există un script în interiorul unui fișier text, atunci poate face o mulțime de răutăciuni.

    De exemplu, fișierul * bat conține codul diferitelor comenzi și este lansat prin dublu clic, ca un program normal. Acele comenzi sunt scrise cu caractere ASCII, dar sistemul de operare este capabil să le interpreteze - transformați-le în astfel de zerouri și unități, care sunt tipice pentru programe.

    Dar, desigur, nu dați clic pe fișierele bat necunoscute, nu? Asta e bine.

    Publicații anterioare:

    Ultima modificare: 06-11-2012 14:45:16

    Etichete materiale:,

    înregistrări), atunci dorința de a reduce cumva spațiul de memorie nefolosit, dar ocupat este destul de de înțeles.

    Mai ales pentru astfel de cazuri, există înregistrări cu parte variantă.

    Descrierea unei înregistrări cu o parte variantă

    In sectiunea var înregistrare cu parte variantă descrieți după cum urmează:

    var<имя_записи>: record<поле1>: <тип1>; [<поле2>: <тип2>;] [...] caz<поле_переключатель>: <тип>de<варианты1>: (<поле3>: <тип3>; <поле4>: <тип4>; ...); <варианты2>: (<поле5>: <тип5>; <поле6>: <тип6>; ...); [...] Sfârșit;

    Parte nevariantă notația (înainte de cuvântul cheie case) respectă aceleași reguli ca notația obișnuită. În general, partea nevariantă poate lipsi cu totul.

    Partea variantaîncepe cu cuvântul caz rezervat, după care este indicat câmpul înregistrării, care va servi în continuare ca comutare. Ca și în cazul unei declarații de caz obișnuite, comutatorul trebuie să aparțină unuia dintre tipuri enumerate date (vezi Cursul 3). Lista de opțiuni poate fi o constantă, un interval sau uniunea mai multor constante sau intervale. Setul de câmpuri care trebuie incluse în structura înregistrării, dacă a fost efectuată opțiunea corespunzătoare, este cuprins între paranteze.

    Exemplu... Pentru a descrie conținutul bibliotecii, sunt necesare următoarele informații:

    Coloanele „Titlu” și „Editor” sunt comune tuturor celor trei opțiuni, iar restul câmpurilor depind de tipul ediției tipărite. Pentru a implementa această structură, vom folosi intrare cu parte variantă:

    tip biblio = nume înregistrare, editor: șir; item case: char of "b": (autor: șir; an: 0..2004); "n": (date: data); "m": (anul: 1700..2004; luna: 1..12; număr: întreg); Sfârșit;

    În funcție de valoarea câmpului articolului, înregistrarea va conține fie 4, 5 sau 6 câmpuri.

    Mecanismul de utilizare a unei înregistrări cu o parte variantă

    Numărul de octeți alocați de compilator pentru înregistrare cu parte variantă, este determinată de versiunea sa „cea mai lungă”. Seturi mai scurte de câmpuri din alte variante ocupă doar o fracțiune din memoria alocată.

    În exemplul de mai sus, opțiunea „cea mai lungă” este „b”: necesită 23 de octeți (21 de octeți pentru un șir și 2 octeți pentru un număr întreg). Pentru opțiunile „n” și „m”, sunt necesari 4 și, respectiv, 5 octeți (vezi tabel).

    nume, editor articol Partea varianta
    ... "b" autor an
    ... "n" date
    ... "m" an lună număr
    ... "b" autor an

    Fișiere binare

    Fișierele binare stochează informații în forma în care acestea sunt reprezentate în memoria computerului și, prin urmare, sunt incomode pentru oameni. Privind într-un astfel de fișier, este imposibil să înțelegem ce este scris în el; nu poate fi creat sau corectat manual - într-un editor de text - etc. Cu toate acestea, toate aceste inconveniente sunt compensate de viteza de lucru cu datele.

    De asemenea, fișierele text aparțin structurilor acces secvenţial, și binar - direct. Aceasta înseamnă că în orice moment vă puteți referi la oricine, nu doar la elementul curent.

    Top articole similare