| BEGIN

| Assign(f, 'A:\REAL.DAT'); { установлена связь }

| Rewrite( f ); { открытие файла для записи }

| Write( f, ... ); { запись в файл f }

| Close( f ); { обязательно закрытие файла}

| {Пусть теперь надо сменить имя файла 'REAL' на 'FLOAT'}

| Rename( f, 'A:\FLOAT.DAT' ); { Готово! }

Рис. 12.1

Переименование происходит при закрытом файле f. После него можно снова открывать файл, но f будет связана уже с новым именем. Старый файл не резервируется (его имя 'A:\REAL.DAT' замещено на 'A:\FLOAT.DAT').

Будет ошибкой так переименовывать имя, что изменится имя диска и путь к файлу. Например, заведомо ошибочен второй оператор:

- 229 -

Assign( f, 'A:\FILE.AAA');

Rename( f, 'C:\FILE.BBB');

поскольку, кроме имени файла, изменяется содержащий его диск. Ведь таким образом мы задаем перенос файла с А: на С:, а лишь затем его переименование. Перенос же, как и копирование, не определен в языке, и его надо конструировать средствами Турбо Паскаля или использовать внешний вызов командного процессора MS-DOS (см. процедуру Exec модуля DOS).

<p>12.5.5. Удаление файлов</p>

Процедура Erase(VAR f) уничтожает (стирает) физический файл на носителе (диске). Файловая переменная f должна быть предварительно связана с существующим физическим файлом. Сам файл к моменту вызова Erase должен быть закрыт.

Чтобы уничтожить файл с именем FileName, достаточно конструкции:

Assign(f, FileName); Erase(f);

где f — файловая переменная любого типа.

Если файл с именем FileName не существует, возникнет сбой при попытке уничтожить его.

<p>12.5.6. Анализ состояния файлов</p>

Логическая функция EOF(VAR f ) : Boolean возвращает значение True, когда при чтении достигнут конец файла f. Это означает, что уже прочитан последний элемент в файле или файл f после открытия оказался пуст. Во всех остальных случаях функция возвращает значение False. Состояние EOF обновляется автоматически при каждом обращении к процедуре ввода данных. Файл f должен быть открыт.

Обращение к EOF без указания файла соответствует анализу конца стандартного файла Input (как правило, связанного с клавиатурой). Стандартный файл считается текстовым, и конец файла в нем обозначен символом #26 (в прочих, нетекстовых файлах, явного обозначения конца файла не существует).

Назначение функции EOF — указывать на возникновение конца файла. Наиболее часто EOF используется в цикле while, читающем файл до конца:

while not EOF(f) do { пока не достигнут конец файла f,}

Read( f, ... ); { читать данные из этого файла}

- 230 -

Эта конструкция гарантирует, что чтение прекратится только после считывания последнего элемента в файле с логическим именем f. Обратите внимание, что используется именно цикл while...do, а не repeat...until. Функция EOF постоянно следит за статусом чтения и позволяет опознать конец файла до того, как мы его непосредственно прочитаем.

<p>12.6. Текстовые файлы</p>

Определение «текстовые файлы — это те, которые выдают или принимают текстовую информацию» в целом правильно, но не слишком развернуто. Дадим другое определение: текстовые файлы — это файлы, в которых:

1) информация представляется в текстовом виде посредством символов в коде ASCII;

2) порции информации могут разделяться на строки. Признаком конца строки служит символ #13 (код 13 — CR). Он может быть объединен с символом перевода строки #10 (код 10 — LF);

3) конец файла обозначается явно символом ^Z (код 26);

4) при записи чисел, строк и логических значений они преобразуются в символьный (текстовый) вид;

5) при чтении чисел и строк они автоматически преобразуются из текстового представления в машинное.

Бытовые примеры текстовых файлов просты. Если файл можно вывести на экран в текстовом режиме и прочитать его, то это — текст. Клавиатура посылает в компьютер «сплошной» текст-файл. Компьютер посылает на принтер текст-файл, даже если принтер рисует в графическом режиме. Рассмотрим коротенький текст-файл:

| Текст-файл

| [13][10]

| Вы читаете текстовый файл, который [13][10]

| может храниться на диске или печататься [13][10]

| на принтере.[13][10]

| В нем можно хранить цифровые записи чисел:[13][10]

| 123 456 789 0[13][10]

| 234 567 890 1[13][10]

| 1.2 3.4 5.60 4[13][10]

| -100.254 [13][10]

| Конец файла[13][10]

| [26]

Цифры в квадратных скобках — управляющие коды с тем же номером, т.е. [13]=#13. в файле они занимают по одному символу и в текстовых режимах, как правило, на экран и принтер не выводятся (но управляют выводом).

Перейти на страницу:

Поиск

Похожие книги