Типті файл. Типті файлдарға мәліметті жазу

Келесі есепті қарастырып көрелік:

Мәтіндік файлға төрт таңбалы 50 сан жазу керек. Әрбір сан жеке жолдарға жазылатын болсын. Нәтижесіндегі файлдың өлшемі қандай болады?

Оны жуықтап бағалап көрелік. Әрбір таңба 1 байт орын алады. Ондай таңбалардың саны 50×4=200. Мәтіндік файлдарға берген анықтама бойынша әрбір жолдың соңында файл соңы белгісі болғандықтан, файл өлшемі 250 байттан асып кетеді.

Бұл мәліметтерді кіші өлшемдегі файлдарда сақтауға бола ма?

Біздің программамыз мәліметтерді өңдей алуы үшін, біз оған алдын ала оперативті жадыдан белгілі бір орын бөлуіміз керек. Жадыдан бөлінетін орынның өлшемі мәліметтердің типіне байланысты болғандықтан, бір элементті сақтау үшін, integer типті элементтерге 2 байт, byte типті бір элементке 1 байт орын бөлінеді.

Мұндай амалдарды мәліметтерді файлда сақтау кезінде қолдануға бола ма? Болады екен. Типті файл деп аталатын арнайы файлдық типтер бар.

Типті файл – барлық элементтері бір типті мәліметтер болып келетін файл түрі. Типті файл элементтері файлдық типетен басқа кез-келген тип бола алады.

Әр элементті файлға жазу үшін, мәліметтердің типіне байланысты, міндетті белгіленген мөлшерде орын бөледі. Типті файлдарды смпаттау бөлімінде ашу үшін, мәтіндік файлды смпаттағандай, файл мәліметтерді смпаттайтын тип жазылады.

<файл атауы>:file of<мәліметтер типі>

Біздің жағдайымызда:

Бұл жазу, берілген файлдағы мәліметтер – 32768-ден 32767 аралығында жататын бүтін сандар екенін көрсетеді.

Сонымен қатар, типті файлдармен жұмыс істегенде де, assign( ) — процедурассының көмегімен нақтылы файл аты мен байланыстыратын атауды көрсетеміз.

Біздің жағдайымызда:

Assign(FileOut ,’may.dat’)

Типті файлдармен жұмыс жасағанда мәтіндік файлдардағы секілді оларды жазуға және оқуға ашуға болады. Ол үшін стандартты функциялар қолданады:

Rewrite(<файл атауы>)процедурасын файлды жазуға ашады және курсорды файлдың басына орналастырады.

Типті файлдарға мәліметтерді жазу write() процедурасы арқылы жүзеге асырылады. Ол мәтіндік файлдардағы write() процедурасына ұқсас. Алайда write() процедурасын типті файлдарда қолдануында біршама өзгешелік бар. Әрекетті орындау кезінде көрсеткіш келесі жазу блогына көшеді. Типті файлдарда writeln() процедурасын қолдану қателік көрсетеді.

Типті файлдарға writeln() процедурасын қолдануға болмайды.

Типті файлдармен жұмыс аяқталған соң Close<файл атауы>) – процедурасы көмегімен файл жабылады.

Енді тақырып басында берілген есепті шешуді жалғастырайық. 2.8.2 тақырыбындағы Мisal_F1 мәліметтерді шығару программасына келесідегідей өзгертулер енгіземіз:

Procedure Exi;

Var

FileOut :File of integer;

I  :integer;

Begin

Assign (FileOut, ‘mayFile.in’);

Rewrite(FileOut);

For i:=1 to Sanau do

Write (FileOut, San[i]);

Close(f);

End;

Программаны толықтырып жазып Мisal_F8 атымен сақтаңыз. Программа орындалғаннан кейін «mayFile.in» файлын ашып көріңіз. Не көрдіңіз?