logo
Язык программирования Pascal - redact Мигунов

Текстовый файл.

Текстовый файл – это совокупность строк переменной длины, описывается следующим образом:

var

<файловая переменная>: text;

Заканчивается текстовый файл маркером конца файла, кодом 26.

Каждая строка заканчивается маркером конца строки, который имеет два кода #13, #10.

Каждая символ строки представляется в коде ASCII. В текстовый файл можно записать и из него прочитать информацию любого типа, если это информация не символьная, то в процессе чтения или записи происходит преобразование из символьной формы во внутреннюю и обратно. Текстовый файл можно создавать с помощью текстового редактора, его можно посмотреть на экране и распечатать на принтере.

Текстовый файл – это файл последовательного доступа. Доступ к строкам возможен только начиная с первой. При работе с текстовыми файлами используются все те процедуры и функции, которые допустимы для типизированных файлов, кроме чтения и записи.

Read (<файловая переменная>; ch: char); – читает один символ из строки.

Write (<файловая переменная>; ch: char); - записывает один символ строки из памяти в файл.

Readln (<файловая переменная>; st: string); - читает строку из файла.

Writeln (<файловая переменная>; st: string); - записывает строку в текстовый файл.

Чтобы определить находиться ли указатель файла на маркере конца файла используют функцию Eof.

Eof (<файловая переменная>);

Чтобы открыть текстовый файл для добавления строки используют процедуру Append.

Append (<файловая переменная>);

Если в процедурах Read, Readln, Write, Writeln не указана файловая переменная, то по умолчанию считается, что информация вводится с клавиатуры и находится в системном файле с именем Input и выводится на монитор из системного файла Output. Input и Output текстовые файлы.

Если процедуры чтения или записи содержат только файловую переменную – это значит при чтении из текстового файла пропускается одна строка и указатель переходит к следующей строке. При записи – записывается только маркер конец строки.

Модули

Модули – это отдельно компилируемая программная единица.

Модуль храниться на диске в отдельном файле, самостоятельно не выполняется и предназначен для создания библиотеки процедур и файлов. Размер модуля не должен превышать 64кБйт. Можно одновременно использовать столько модулей, сколько позволяет оперативная память.

Модуль имеет следующую структуру:

{I} unit <имя модуля>;

{II} interface <интерфейсная часть>;

{III} implementation <исполнительная часть>;

{IV} [begin <инициирующая часть>];

End.

unit my__unit;

interface // объявления процедур и функций, доступных программам, использующим этот модуль

function IsInt(ch : char) : Boolean; // функция Islnt проверяет, является ли символ допустимым во время ввода целого числа

function IsFloat(ch : char; st: string) : Boolean;

// Функция IsFloat проверяет, является ли символ допустимым

// во время ввода дробного числа

// ch — очередной символ

// st — уже введенные символы

implementation // реализация

// проверяет, является ли символ допустимым

// во время ввода целого числа

function Islnt(ch : char) : Boolean;

begin

if (ch >= '0') and (ch <= '9') // цифры

or (ch = #13) // клавиша <Enter>

or (ch = #8) // клавиша <Backspace>

then Islnt := True // символ допустим

else Islnt := False; // недопустимый символ

end;

// проверяет, является ли символ допустимым

// во время ввода дробного числа

function IsFloat(ch : char; st: string) : Boolean;

// ch — очередной символ // st — уже введенные символы

begin

if (ch >= '0') and (ch <= '9') // цифры

or (ch = #13) // клавиша <Enter>

or (ch = #8) // клавиша <Backspace>

then

begin

IsFloat := True; // символ верный

Exit; // выход из функции

end;

case ch of

'-':

if Length(st) = 0 then

IsFloat := True;

',':

if (Pos(',',st) = 0) and (st[Length(st)] >= '0') and (st[Length(st)] <= '9') then // разделитель можно ввести только после цифры

// и если он еще не введен

IsFloat := True; else // остальные символы запрещены

IsFloat := False; end

// это раздел инициализации, он в данном случае не содержит инструкция

end.