Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

И параметров-строк | Типы в Турбо Паскале | Служебные символы | Строковый тип | Перечислимый тип | Ограниченный тип (диапазон) | Структурированные типы данных. Массивы | Множества | Program zapis; | Процедурные типы |


Читайте также:
  1. Как переименовать файлы по маске из пакетного файла
  2. Нетипизированные файлы
  3. Типизированные файлы

Это файлы последовательного доступа. Они предназначены для хране­ния текстовой информации.

Текстовые файлы связываются с файловыми переменными типа TEXT:

Var <ф.п.>: TEXT;

Текстовый файл в ТП трактуется как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой строки. При создании текстового файла в конце каждой строки ставится специальный признак EOLN (End Of LiNe - конец строки), а в конце всего файла – признак EOF (End Of File - конец файла) c кодом 26. Тестируются эти признаки одноименными логическими функциями.

Для доступа к записям текстового файла применяются процедуры RE­AD, READLN, WRITE, WRITELN. В них можно использовать переменное число параметров, в качестве которых могут быть символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять фай­ловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с файловой переменной процедурой ASSIGN, и открытому процедурами RESET или REWRITE. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT и OUTPUT.

Процедура READ обеспечивает ввод символов, строки и чисел. Она имеет следующий формат

READ (<ф.п.>,<список_ввода> ); или READ( <список_ввода> );

где <список_ввода> - последовательность из одной или более переменных типа CHAR, STRING или любого целого или вещественного типов, например:

READ(Х); ввод переменной Х с клавиатуры

READ(f,x1,x2,x3); ввод трех переменных из файла

При вводе переменной типа CHAR выполняется чтение одного символа из файла и присваивается считанное значение переменной. Если перед чтением указатель файла достиг конца очередной строки, то считывается символ CR (код 13). Если достигнут конец файла - то символ EOF.

При вводе переменной типа STRING количество считанных символов равно максимальной длине строки, если раньше не встретились символы CR, EOF. В этом случае эти символы в строку не помещаются. Если коли­чество символов во входной строке больше максимального размера строки, то «лишние» символы до конца строки отбрасываются, а новое обращение к READ возвращает пустую строку.

Таким образом, READ не в состоянии прочесть последовательность строк: читается только одна строка, остальные окажутся пустыми. Для ввода последовательности строк символов применяется процедура READLN.

При вводе числовых данных процедура READ сначала выделяет подс­троку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк пропускаются до первого знача­щего символа; и, наоборот, после первого значащего символа любой из перчисленных символов или символ EOF указывает на конец подстроки. Вы­деленная таким образом подстрока рассматривается как символьное представление числовой константы и присваивается переменной. Фактически весь файл рассматривается как одна длинная строка чисел.

Процедура READLN также обеспечивает ввод символов, строк и чисел: READLN(f,x); или READLN(f, x1,x2,...,xN);

Она идентична процедуре READ за исключением того, что после счи­тывания последней переменной списка ввода оставшаяся часть строки до маркера EOLN пропускается, поэтому следующее обращение к READLN или READ начинается с первого символа новой строки.

Эту процедуру можно вызвать без параметра <список ввода>: READLN(f); READLN; что приведет к пропуску всех символов текущей строки. Таким способом можно организовать ожидание нажатия клавиши ENTER при открытом окне результатов.

При чтении с клавиатуры курсор помещается в начало следующей строки, в то время как в процедуре READ остается в текущей строке.

Процедура WRITE обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:

WRITE(<ф.п.>,<список_вывода>]); или WRITE(<список_вывода>]);

где <список вывода> - это последовательность из одного или более вы­ражений (переменных) символьного, строкового, логического, а также любого целого или вещественного типа, например:

WRITE(x); WRITE(f,x1,x2,xN);

Файловая переменная, если она указана, должна быть предварительно описана типом TEXT и связана с именем файла или логического устройства процедурой ASSIGN. Если файловая переменная отсутствует, подразумева­ется вывод в стандартный файл OUTPUT (на экран дисплея).

Любой элемент списка вывода X может быть представлен в следующей форме: X[:w[:d]], причем элементы, заключенные в квадратные скобки мо­гут отсутствовать. Здесь X - имя переменной или выражение, w, d - вы­ражения целого типа WORD (0..65535). Если параметр w присутствует, то он указывает минимальную ширину поля для записи значения X. При длине переменной X меньше w слева производится дополнение поля вывода пробе­лами, если Х больше w, то w игнорируется и выводится необходимое число символов (по умолчанию w=23); если параметр w не указан, то значение соответствующей переменной выводится вслед за предыдущим без како­го-либо разделения.

Параметр d задает количество десятичных знаков в дробной части числа вещественного числа. Используется только для вывода значений вы­ражений вещественных типов. Если параметр d не указан, то число выводится в экспоненциальной форме, в противном случае в формате представ­ления с фиксированной точкой. Если d=0, выводится только целая часть числа. Например: результаты вывода для числа Х=3.22 будут следующие:

WRITE(X:6:2); {3.22}

WRITE(X:6:0); {3}

WRITE(X:4:2); {3.22}.

При выводе логических выражений в зависимости от значения выво­дятся подстроки TRUE и FALSE. Ввод логических констант процедурами RE­AD и READLN не предусмотрен.

Вывод процедурой WRITELN отличается от WRITE тем, что выводимая строка завершается кодами CR (возврат каретки) и LT (перевод строки), т. е. добавляет маркер конца строки.

При вызове WRITELN можно опускать <список_вывода>. В этом случае в файл передается признак конца строки EOLN, что при выводе на экран приводит к переводу курсора в начало следующей строки:

WRITELN(f); WRITELN;

Для текстовых файлов также применимы процедуры и функции (табл. 8).

Пример программы, которая вводит с клавиатуры три вещественных числа и в файл FXD.DAT записывает эти числа и их сумму.


Дата добавления: 2015-09-05; просмотров: 52 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Общие процедуры и функции для работы с файлами| Типизированные файлы

mybiblioteka.su - 2015-2024 год. (0.007 сек.)