Ðåàëèçîâàííàÿ â Pascal ïîääåðæêà ôàéëîâîé ñèñòåìû íàèáîëåå ïîëíî èñïîëüçóåò âîçìîæíîñòè îïåðàöèîííîé ñèñòåìû ïî ïåðåäà÷å äàííûõ. Êàæäîìó ôàéëó â ÿçûêå ñòàâèòñÿ â ñîîòâåòñòâèå ôàéëîâàÿ ïåðåìåííàÿ îïðåäåëåííîãî òèïà, ïîýòîìó ïåðåä íà÷àëîì ðàáîòû ñ ôàéëîì íåîáõîäèìî óñòàíîâèòü äàííîå ñîîòâåòñòâèå. Äëÿ ýòîãî â ÿçûêå èñïîëüçóåòñÿ ïðîöåäóðà Assign (var F; Name: string); ãäå F - ïåðåìåííàÿ ëþáîãî ôàéëîâîãî òèïà, à ñòðîêîâîå âûðàæåíèå Name ñîäåðæèò ïîëíîå èìÿ ôàéëà, îòâå÷àþùåå òðåáîâàíèÿì îïåðàöèîííîé ñèñòåìû.
Ïðîöåäóðà Assign âñåãäà ïðåäøåñòâóåò äðóãèì ïðîöåäóðàì ðàáîòû ñ ôàéëàìè, òàê êàê ñòàâèò è ñîîòâåòñòâèå êîíêðåòíîìó ôàéëó íà âíåøíåì íîñèòåëå ëîãè÷åñêóþ ôàéëîâóþ ïåðåìåííóþ ÿçûêà, ê êîòîðîé âïîñëåäñòâèè áóäóò îáðàùàòüñÿ âñå äðóãèå ôàéëîâûå ïðîöåäóðû.
Íåäîïóñòèìî èñïîëüçîâàíèå ïðîöåäóðû Assign äëÿ óæå îòêðûòîãî ôàéëà. Ýòî çíà÷èò, ÷òî åñëè ôàéëîâîé ïåðåìåííîì ñ ïîìîùüþ ïðîöåäóðû Assign áûëî íàçíà÷åíî èìÿ êîíêðåòíîãî íàáîðà äàííûõ, à çàòåì ýòîò ôàéë áûë îòêðûò, òî ïðåæäå ÷åì èñïîëüçîâàòü òó æå ôàéëîâóþ ïåðåìåííóþ äëÿ íîâîãî íàáîðà äàííûõ, íåîáõîäèìî ñ ïîìîùüþ ïðîöåäóðû Close çàêðûòü ýòîò ôàéë.
Äëÿ ðàáîòû c ôàéëîì, ïðåæäå âñåãî, íåîáõîäèìî åãî îòêðûòü. Â Pascal äëÿ ýòîãî ïðåäóñìîòðåíû äâå ïðîöåäóðû:
Reset(var F : file ); F - îòêðûâàåò ñóùåñòâóþùèé ôàéë;
Rewrite(var F : file ); F - ñîçäàåò è îòêðûâàåò íîâûé ôàéë.
Ïðè îïèñàíèè îáåèõ ïðîöåäóð ïàðàìåòð File èáîçíà÷àåò ôàéëîâóþ ïåðåìåííóþ ëþáîãî òèïà. Îòêðûòèå âíåøíåãî ôàéëà ñ ïîìîùüþ ïðîöåäóðû Reset â ñëó÷àå åãî îòñóòñòâèÿ íà äèñêå ìîæåò ïðèâåñòè ê Îøèáêå ïðè âûïîëíåíèè ïðîãðàììû. Ïîäîáíûå îøèáî÷íûå ñèòóàöèè â îïåðàöèÿõ ââîäà-1-ûâîäà ïîçâîëÿåò îòñëåæèâàòü ñïåöèàëüíàÿ ôóíêöèÿ IOresult. Ïðèìåð: Ñòàíäàðòíîå îòêðûòèå ôàéëà.
Assign(F, ‘’);
Reset(F);
Ïðè íàçíà÷åíèè ôàéëîâîé ïåðåìåííîé ïóñòîé ñòðîêè ïðîèñõîäèò àâòîìàòè÷åñêàÿ ññûëêà íà ñòàíäàðòíûé ôàéë ââîäà, ÷òî â ìîäóëå SYSTEM ñîîòâåòñòâóåò óñòðîéñòâó CON. Ñ îòêðûòèåì òàêîãî ôàéëà ïîÿâëÿåòñÿ âîçìîæíîñòü ââîäà äàííûõ ñ êëàâèàòóðû.
Èìåþòñÿ íåêîòîðûå ðàçëè÷èÿ â èñïîëüçîâàíèè ïðîöåäóðû Reset ïðè îòêðûòèè ðàçëè÷íûõ òèïîâ ôàéëîâ.  îòíîøåíèè òåêñòîâûõ ôàéëîâ (òèï Text) äåéñòâèå ïðîöåäóðû îçíà÷àåò îòêðûòèå ôàéëà òîëüêî äëÿ ÷òåíèÿ. Äëÿ íåòèïèçèðîâàííûõ ôàéëîâ â îïèñàíèå ïðîöåäóðû äîáàâëÿåòñÿ åùå îäèí ïàðàìåòð RecSize òèïà word, êîòîðûé óñòàíàâëèâàåò äëèíó çàïèñè äëÿ ôóíêöèé îáìåíà ñ ôàéëîì. Ïðîöåäóðà Reset äëÿ íåòèïèàïðîâàííîãî ôàéëà èìååò âèä:
Reset(tvar F: file; RecSize: word);
Ïðîöåäóðà Rewrite ñîçäàåò è îòêðûâàåò íîâûé ôàéë. Èñïîëüçîâàíèå ýòîé ïðîöåäóðû òðåáóåò îñîáîãî âíèìàíèÿ. Ïðè ïîïûòêå ñîçäàòü è îòêðûòü ôàéë ñ èìåíåì óæå ñóùåñòâóþùåãî íà äèñêå íàáîðà äàííûõ äåéñòâèå ïðîöåäóðû Rewrite ñâåäåòñÿ ê óäàëåíèþ ýòîãî íàáîðà è ñîçäàíèþ íîâîãî ïóñòîãî ôàéëà ñ òåì æå èìåíåì.
Ïðè îòêðûòèè íîâûõ íåòèïèçèðîâàííûõ ôàéëîâ äëÿ çàäàíèÿ äëèíû çàïèñè â îïèñàíèè ïðîöåäóðû Rewrite äîáàâëÿåòñÿ äîïîëíèòåëüíûé ïàðàìåòð RecSize òèïà word.  ýòîì ñëó÷àå ïðîöåäóðà èìååò âèä:
Rewrite(var F: file; RecSize: word);
Åñëè ïðîöåäóðà Rewrite èñïîëüçóåòñÿ äëÿ òåêñòîâîãî ôàéëà, òî ê îòêðûâàåìîìó íîâîìó íàáîðó äàííûõ â äàëüíåéøåì ìîãóò áûòü ïðèìåíåíû òîëüêî îïåðàöèè çàïèñè.
Îïåðàöèÿ çàêðûòèÿ ôàéëà ÿâëÿåòñÿ ëîãè÷åñêèì îêîí÷àíèåì ðàáîòû ñ ëþáûì îòêðûòûì ôàéëîì. Äëÿ ýòîãî ñëóæèò ïðîöåäóðà
Close(var F);
Èñïîëüçîâàíèå ïðîöåäóðû Close ïîçâîëÿåò óñòðàíèòü ñâÿçü ôàéëîâîé ïåðåìåííîé ñ âíåøíèì ôàéëîì, óñòàíîâëåííóþ ñ ïîìîùüþ ïðîöåäóðû Assign.
Ïðèìåð: Ïîëíàÿ öåïî÷êà êîìàíä äëÿ ñîçäàíèÿ ïðîñòîãî òåêñòîâîãî ôàéëà ñ èìåíåì WORK.TXT:
Var F: text;
Begin
Assign(F, 'WORK.TXT');
Rewrite(F);
Write(F, 'Ïðîñòîé òåêñòîâûé ôàéë');
Close(F);
End.
Ê ÿçûêîâûì ñðåäñòâàì îáñëóæèâàíèÿ ôàéëîâ íåîáõîäèìî îòíåñòè ïðîöåäóðû ïåðåèìåíîâàíèÿ è óäàëåíèÿ íåîòêðûòûõ ôàéëîâ. Èñïîëüçîâàíèå ýòèõ ïðîöåäóð íå çàâèñèò îò òèïà ôàéëà.
Rename(var F; NewName : string);
Ïðîöåäóðà ïåðåèìåíîâûâàåò îòêðûòûé ôàéë F ëþáîãî òèïà. Íîâîå èìÿ çàäàåòñÿ ñòðîêîé NewName.
Erase(var F);
Ïðîöåäóðà óäàëÿåò íåîòêðûòûé âíåøíèé ôàéë ëþáîãî òèïà, çàäàâàåìûé ïåðåìåííîé F.
|