Мәліметтерді жазу және оқу функциялары.
Файлды, одан мәліметтерді оқу немесе дискіге жаңа мәліметтерді жазу алдында файлды ашу қажет (бар файлды ашқан кезде ондағы бар ақпараттар сақталады).
Жаңа файлды құру кезінде ол оқу және жазу үшін ашылады.
Дискілік файлға жазылатын мәліметтер уақытша DOS буферінде сақталады. Файлды жабу кезінде барлық мәліметтер буферден дискіге жазылады.
Файлды жабу кезінде дискі каталогы толтырылады және дискриптор ары қарай қолдану үшін босатылады.
Файлды аша отырып, DOS оған ж‰йелік мєліметтердіњ ж‰йелік облыстары арасында жедел жадыда орналасатын ашық файлдар кестесі (System File Table, SFT) деп аталатын арнайы ж‰йелік кестеніњ кезекті бос элементін (файлды сипаттау блогы) таѓайындайды. Бір уақытта жұмыс істеуге болатын файлдардың ењ кµп санын анықтайтын бұл кестенің көлемі CONFIG.SYS файлының FILES директивасымен DOS конфигурациялау кезењінде беріледі.
Ашылатын файл туралы жазбаны диск каталогтарының жүйесінен тауып, DOS өзіне бөлінген SFT (файлды сипаттау блогы) элементіне файлдың негізгі сипаттамаларын жазады: аты, ұзындығы, атрибуттары, құру күні мен уақыты, бастау кластері, файл туралы ақпараттан тұратын каталог жазбасыныњ дискідегі физикалық адресі және т.б. Ақпараттың бір бөлігі каталог жазбасынан SFT элементіне жазылады, ал бір бөлігін (мысалы, дискінің физикалық сипаттамалары туралы ақпарат сақталатын дискінің параметрлер блогына көрсеткіш) DOS өзі қояды. Файлды сипаттау блогының мањызды элементі болып, файлдыњ кµрсеткіші – кезекті жазу немесе оќу операциясы басталатын файлдыњ басына ќатысты байт нµмірі саќталатын екі сөзді ұяшық болып табылады. Көрсеткіштің бар болуы файлға тіке қатынас жасауды, демек файлдыњ кез келген жерінен оќу немесе жазуды ±йымдастыруѓа м‰мкіндік береді. SFT-дағы файлды сипаттау блогының файлына бµлінген нөміріне сілтемені DOS программаға дескриптор т‰рінде қайтарады.
Ашық файлға қаратпа жасау (жазу, оқу, файл сипаттамаларын өзгерту және т.б.) жасау оған меншіктелген дескриптор арқылы жүзеге асады; ашылмаѓан файлдың дескрипторы болмайды және жүйе онымен жұмыс істей алмайды. Ашық файлмен болатын операцияның орындалуы бойынша DOS SFT блогында аќпаратты модификациялайды; SFT құрамы әрқашан файлдың ағымдаѓы жаѓдайын бейнелейді.
Файлмен жұмыс істеу аяқталғаннан соң DOS функцияларының көмегімен оны жабу керек. Жабу процесінде DOS буферлерініњ дискіге тасталуы, каталог жазбасыныњ модификациясы жєне SFT-даѓы файлды сипаттау блогыныњ оѓан бекітілген дескриптормен бірге босатылуы жасалады.
Мәтіндік файлға мәліметтер жазу.
Бір өлшемді массив.
Ең қарапайым файл типі мәтіндік файл болып табылады. Бұл файлдағы мәліметтер типтік және типтік емес файлдардағыдай машиналық кодта емес, сан, әріп және басқа пернетақта символдары түрінде (ASCII кодында) беріледі. Сондықтан мұндай файлдар мазмұны оңай қаралады, оңай өзгереді және оларды кез келген мәтіндік редактордың, соның ішінде Borland Pascal ортасының да көмегімен өзгертуге болады. Өздеріңіз білетіндей 2.1.2.-ні қара, мәтінді теру кезінде жаңа жолды енгізу үшін “Enter” пернесін басу керек, осы кезде арнайы код гинерацияланады—ол жол соңы коды, ал файлды сыртқы сақтау құрылғысына жазған кезде де арнайы код гинерацияланады—ол файл соңы коды. Мәтіндік файлды оқығанда бұл кодтар көрінбейді.
Екі өлшемді массив.
Алдыңғы тақырыпта сіз мәтіндік файлдарды ашуды, оған ақпараттарды жазуды үйреніңіздер. Write()- процедурасын пайдаланып мәліметтерді бір жолға, ал writeln()—процедурасын пайдаланып оларды бағанға жазуды көрдік. Осы білгендерімізді пайдаланып, келесі есепті шешіп көрелік:
Пернетақтадан, өлшемі 100х100, элементтері бүтін сан болатын, екі өлшемді массив енгізіледі. Осы массивті элементтерінің орналасу реті бойынша, `МayFile5.in`атымен, мәтіндік файл түрінде жазатын, программа жазу керек.
Мәтiндiк файлдан мәлiметтердi оқу
Өткен тақырыптарда сіздер, мәліметтерді мәтіндік файлға жазуды үйреніңіздер. Енді оларды қайтадан файлдан қалай оқуға болатынын қарастырамыз.
Ол үшін `mayFile1/in`файлын пайдаланамыз. Мәліметтерді файлға жазу кезіндегідей, біздің файлмызды байланыстыратын айнымалыға атау беруіміз керек. Айталық, ол атауFilelnболсын, содан кейін біз оны мәтіндік файл ретінде сипаттауымыз керек. Бұл айнымалыны біз енгізу процедурасында пайдаланатын болғандықтан, сол процедураның жергілікті айнымалысы ретінде сипаттаймыз.
var
Filelnt:text;
Одан кейін біз программада, “мәтіндік типті ”Fileln айнымалысы, біздің
`mayFile1.in`атауымен берілген нақтылы файлмызды белгілейтіндігін көрсетуіміз керек. Ол үшін assing(NameVar,NameFile)-процедурасын қолданады.
Енді файлдан мәліметтерді оқу үшін, берілген файлды ашуымыз керек. Ол үшін,reset(NameVar)—процедурасында қолданады, мұндағыNameVar-сіздің файлды белгілеуге берген айнымалыңыздың атауы, біздің жағдайымызда, олNameVar-Fileln. Reset(NameVar)-процедурасы, мәліметтерді оқуға файлды ашады және курсорды файлдың басына орналастырадв. Егер ондай жоқ болса, қателік туралы хабарлама береді.Ендімәліметтерді файлдан оқуға барлығы дайын болды. Ол үшін өзімізге бұрынан танысRead()және Readln()процедураларын пайдаланамыз. Мәліметтерді оқу пернетақтадан емес, файлдан жүзеге асу үшін, мәліметтерді оқудың жолын көсетеміз. Яғни, жақшалардың ішіне,assing()-процедурасының көмегімен біздің файлмызды байланыстырып тұрған, айнымалының атауын көрсетеміз.
`MayFile.in`файлындағы бірінші сан, файлдағы барлық сандардардың мөлшерін көрсетеді. Сондықтан, алдымен файлдан
Sanauайнымалысының мәнін оқытамыз,содан кейін параметрлі циклді қолданып, файлдағы сандардың мәндерін оқимыз. Мәліметтер толық оқылып болған соң, өзімізге таныс Close() процедурасын пайдаланып, файлды жабу керек.