Òåêñòîâûé ôàéë ìîæíî ðàññìàòðèâàòü êàê ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, ðàçáèòóþ íà ñòðîêè äëèíîé îò 0 äî 256 ñèìâîëîâ. Äëÿ îïèñàíèÿ èñïîëüçóåòñÿ ñòàíäàðòíûé òèï Text:
var
F: text; {F - ôàéëîâàÿ ïåðåìåííàÿ}
Êàæäàÿ ñòðîêà çàâåðøàåòñÿ ìàðêåðîì êîíöà ñòðîêè. Íà ïðàêòèêå òàêîé ìàðêåð ïðåäñòàâëÿåò ñîáîé ïîñëåäîâàòåëüíîñòü èç äâóõ ñèìâîëîâ: ïåðåâîä ñòðîêè chr(13) è âîçâðàò êàðåòêè chr(10). Ýòè äâà ñèìâîëà çàäàþò ñòàíäàðòíûå äåéñòâèÿ ïî óïðàâëåíèþ òåêñòîâûìè ôàéëàìè. Îòêðûâàåìûå ïî óìîë÷àíèþ ñòàíäàðòíûå ôàéëû Input è Output â ìîäóëå System èìåþò òèï Text. Ó òåêñòîâûõ ôàéëîâ åñòü ñâîÿ ñïåöèôèêà. Ñïåöèàëüíûå ðàñøèðåíèÿ ñòàíäàðòíûõ ïðîöåäóð ÷òåíèÿ (Read) è çàïèñè (Write) ðàçðåøàþò ðàáîòàòü ñî çíà÷åíèÿìè íåñèìâîëüíîãî òèïà. Äðóãèìè ñëîâàìè, ïîñëåäîâàòåëüíîñòü ñèìâîëîâ àâòîìàòè÷åñêè ïðåîáðàçóåòñÿ ê çíà÷åíèþ òîãî òèïà ïåðåìåííîé, êîòîðàÿ èñïîëüçóåòñÿ â ôàéëîâûõ îïåðàöèÿõ.
Âûçîâ Read(F, Ww), ãäå Ww – ïåðåìåííàÿ òèïà word, îñóùåñòâëÿåò ÷òåíèå èç ôàéëà F ïîñëåäîâàòåëüíîñòè öèôð, êîòîðàÿ çàòåì èíòåðïðåòèðóåòñÿ â ÷èñëî, çíà÷åíèå êîòîðîãî è áóäåò ïðèñâîåíî ïåðåìåííîé Ww.  ñëó÷àå åñëè âìåñòî ïîñëåäîâàòåëüíîñòè öèôð èäåò ëþáàÿ äðóãàÿ ïîñëåäîâàòåëüíîñòü ñèìâîëîâ, èñïîëüçîâàíèå òàêîãî îïåðàòîðà ïðèâîäèò ê îøèáêå âûïîëíåíèÿ ïðîãðàììû. Îòêðûòèå òåêñòîâîãî ôàéëà ìîæíî ïðîèçâåñòè äâóìÿ ñòàíäàðòíûìè ñïîñîáàìè:
- ïîñòàâèòü â ñîîòâåòñòâèå ôàéëîâîé ïåðåìåííîé èìÿ ôàéëà (ïðîöåäóðà Assign), îòêðûòü íîâûé òåêñòîâûé ôàéë (ïðîöåäóðà Rewrite);
- ïîñòàâèòü â ñîîòâåòñòâèå ôàéëîâîé ïåðåìåííîé èìÿ ôàéëà (ïðîöåäóðà Assign), îòêðûòü óæå ñóùåñòâóþùèé ôàéë (ïðîöåäóðà Reset).
Òåêñòîâûé ôàéë â ñèëó ñâîåé ñïåöèôèêè âî âðåìÿ ðàáîòû äîïóñêàåò òîëüêî îäèí âèä îïåðàöèè: ÷òåíèå èëè çàïèñü. Â ñâÿçè ñ ýòèì äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè èñïîëüçóåòñÿ åùå îäíà ïðîöåäóðà îòêðûòèÿ ôàéëà:
Append(vaã F : text);
Ýòà ïðîöåäóðà îòêðûâàåò óæå ñóùåñòâóþùèé ôàéë è ïîçèöèîíèðóåò óêàçàòåëü îáðàáîòêè íà êîíåö ôàéëà. Ïîñëå ýòîãî â òåêñòîâûé ôàéë ìîæíî òîëüêî äîáàâëÿòü èíôîðìàöèþ, ïðè÷åì òîëüêî â êîíåö ôàéëà. Íà ïðîöåäóðó Append íàêëàäûâàþòñÿ òå æå îãðàíè÷åíèÿ, ÷òî è íà ïðîöåäóðû Reset è Rewrite.
Äëÿ îáðàáîòêè òåêñòîâûõ ôàéëîâ èñïîëüçóþòñÿ ïðîöåäóðû Read è Write, îáåñïå÷èâàþùèå ñîîòâåòñòâåííî ÷òåíèå è çàïèñü îäíîé ñòðîêè è áîëåå â òåêñòîâûé ôàéë. Èñïîëüçîâàíèå ñïåöèàëüíûõ ðàçäåëèòåëåé ñòðîê ïîçâîëèëî ââåñòè â ñîñòàâ ÿçûêîâûõ ñðåäñòâ åùå äâå ïðîöåäóðû: Readln, âûïîëíÿþùóþ òå æå äåéñòâèÿ, ÷òî è Read, è äîïîëíèòåëüíî – ÷òåíèå äî ìàðêåðà êîíöà ñòðîêè è ïåðåõîä ê íîâîé ñòðîêå; Writeln, îáåñïå÷èâàþùóþ çàïèñü âñåõ âåëè÷èí ñ îáÿçàòåëüíîé óñòàíîâêîé ìàðêåðà êîíöà ñòðîêè â ôàéë.
Ïðîöåäóðà Read îáåñïå÷èâàåò ââîä äàííûõ îáùèì ïîòîêîì èç îäíîé ñòðîêè, a Readln ïðèâîäèò ê îáÿçàòåëüíîìó ïåðåõîäó ê ñëåäóþùåé ñòðîêå òåêñòîâîãî ôàéëà, ò. å. ââîä äàííûõ îñóùåñòâëÿåòñÿ èç ðàçëè÷íûõ ñòðîê. Âñå âûøåñêàçàííîå â ðàâíîé ìåðå îòíîñèòñÿ ê îïåðàöèÿì çàïèñè ñ ïîìîùüþ ïðîöåäóð Write è Writeln.
Ïðè îðãàíèçàöèè îïåðàöèé ââîäà-âûâîäà èñïîëüçóþòñÿ ñïåöèàëüíûå ÿçûêîâûå ñðåäñòâà â âèäå ôóíêöèé Eoln, Eof, SeekEoln, SeekEof.
Ôóíêöèÿ Eoln(var F: text) âîçâðàùàåò áóëåâñêîå çíà÷åíèå True, åñëè òåêóùàÿ ôàéëîâàÿ ïîçèöèÿ íàõîäèòñÿ íà ìàðêåðå êîíöà ñòðîêè èëè âûçîâ Eof(F) âåðíóë çíà÷åíèå True. Âî âñåõ îñòàëüíûõ ñëó÷àÿõ çíà÷åíèå ôóíêöèè áóäåò False.
Ôóíêöèÿ Eof(var F: text) âîçâðàùàåò áóëåâñêîå çíà÷åíèå True, åñëè óêàçàòåëü êîíöà ôàéëà íàõîäèòñÿ ñðàçó çà ïîñëåäíèì êîìïîíåíòîì, è False – â ïðîòèâíîì ñëó÷àå.
Ôóíêöèÿ SeekEoln(var F: text) âîçâðàùàåò áóëåâñêîå çíà÷åíèå True ïðè äîñòèæåíèè ìàðêåðà êîíöà ñòðîêè, ïðè÷åì óêàçàòåëü ôàéëà ïðîïóñêàåò âñå ïðîáåëû è çíàêè òàáóëÿöèè, ïðåäøåñòâóþùèå ìàðêåðó.  ïðîòèâíîì ñëó÷àå ôóíêöèÿ âîçâðàùàåò çíà÷åíèå False.
Ôóíêöèÿ SeekEof(var F: text) âîçâðàùàåò çíà÷åíèå True, åñëè óêàçàòåëü ôàéëà íàõîäèòñÿ íà ìàðêåðå êîíöà ôàéëà. Ýòà ôóíêöèÿ òàêæå ïðîïóñêàåò âñå ïðîáåëû è çíàêè òàáóëÿöèè, ïðåäøåñòâóþùèå ìàðêåðó, è âûïîëíÿåò àâòîìàòè÷åñêèé ïðîïóñê ìàðêåðà êîíöà ñòðîêè. Õàðàêòåðíûì ïðèìåðîì èñïîëüçîâàíèÿ ýòèõ ôóíêöèé ìîæåò ñëóæèòü ÷òåíèå ÷èñëîâûõ âåëè÷èí èç òåêñòîâîãî ôàéëà, êîãäà íåîáõîäèìî ïðîïóñòèòü îáðàáîòêó ðàçäåëÿþùèõ ýòè ÷èñëà ïðîáåëîâ èëè çíàêîâ òàáóëÿöèè.
|