Типті файлдан мәліметтерді оқу

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

Типті файлдардан мәліметтерді оқуға арналған негізгі проуедураларды қарастырамыз.

Типті файлдармен жұмыс жасар алдында, мәтіндік файлдардағыдай, файл атауын жариялау және файлдағы мәліметтердің типін көрсету керек, нақтылы файл атауын байланыстыратын айнымалы атауын сипаттауымыз кереек (2.8.5 тақырыбын қараңыз).

Reset(<файл атауы>) – процедурасы файлдф оқуға ашады және көрсеткішті файлдың басына орналстырады.

Типті файлдан мәліметтерді оқу үшін read( ) процедурасын қолданады. Берілген процедураның жұмысы кезінде, блоктан мәліметті оқыған соң, көрсеткіш автоматтты түрде келесі жазбаға ауысады. Егер көрсеткіш соңғы жазбаның соңынан тұрса, онда программа орындалуында қателік болады.

Бұл қиындықтан шығу үшін FileSize( ) функциясын қолдануға болады.

FileSize(<файл атауы>):longintфункциясы файлдағы компоненттер санын анықтайды. Яғни, бізге файлдағы барлық мәліметтерді оқу керек болса, оқу процедурасын FileSize( ) рет орындауымыз керек. Мisal_F8 программасымен құралған типті файлдан мәліметтерді оқудың программасының мәтінінен үзінді келтіреміз:

Procedure Init;

Var

FileInput : file of integer;

I, Sanau : integer;

San:array[1..100] of integer;

begin

assign(FileInput, ‘mayFile.in’);

reset (FileInput);

Sanau :=FileSize(FileInput);

For i:=1 to Sanau do

Read(FileInput, San [i]);

Close(FileInput)’

End;

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

Көрсеткішті қажетті мәліметті оқуға қою үшін, Seek() – процедурасын қолданады. Оның түрі келесідегідей болады:

Seek(<файл атауы>, <жазбаның нөмері>);

Сонымен қатар типті файлдарда нөмірлеу нөлден басталатыны есте ұстау керек, яғни бірінші лементтің нөмері «Нөл». Олай болса, біз көрсеткішті үшінші элементті оқуға көшіру үшін, Seek( ) — процедурасын қолдануды ескеруіміз керек. Мысалы:

Seek(FileInput, 2);

немесе

Seek(FileInput, 3-1);