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

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

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

Перемещения по файлу

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

EOF (< имя_файловой_переменной >)

При чтении, если все данные прочитаны, возникает ситуация «конец файла», и эта функция принимает значение True, иначе она равна False. Так как при записи данные всегда добавляются в конец файла, то функция имеет постоянное значение True.

Процедура

SEEK (< имя_файловой_переменной >,<выражение>);

позволяет явно изменять значение указателя файла, устанавливая его на компонент файла с номером, заданным выражением. Здесь выражение должно быть целого типа Longint.

НЕ нашли? Не то? Что вы ищете?

Эту процедуру можно применять не только для произвольного чтения элементов файла, но и для его усечения. Если затем использовать процедуру

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

то компоненты файла, следующие за текущем указателем включительно, будут удалены.

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

FileSize (< имя_файловой_переменной >)

FilePos (< имя_файловой_переменной >)

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

Пример работы с файлом

В качестве примера приведем статистическую обработку информации, находящейся в файле из текущего раздела, имя которого вводится с клавиатуры, а расширение. DAT назначено по умолчанию. В программе вычисляются математическое ожидание и дисперсия вещественных чисел соответственно по формулам:

и .

Program Statistic;

Var

Fil:File of real; { входной файл }

x, { очередное вводимое число }

M, D: real; { матожидание и дисперсия }

N: integer; { количество введенных значений }

Name: string; { вводимое имя файла (без расширения) }

Begin

N:=0; M:=0; D:=0;

Read(Name); { вводим имя файла }

{ ставим в соответствие внутреннее и внешнее имена }

Assign(Fil, Name+'.dat');

Reset(Fil); { открываем файл для чтения}

While not Eof(Fil) do Begin

N:=N+1;

Read(Fil, x); { в цикле вводим все значения }

M:=M+x; { и суммируем их }

D:=D+x*x;

end;

M:=M/N;

D:=sqrt(D/N-M*M);

Writeln(' Матожидание= ',M:10:5,

' Дисперсия= ', D:10:5);

end.

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

Обработка ошибок ввода-вывода

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

Можно предусмотреть в самой программе реакцию на ошибочные ситуации. Для этого используется директива компилятора {$I-}. В этом случае возникновение ошибки не будет приводить к немедленному завершению программы, а код этой ошибки будет запомнен в качестве значения стандартной функции IOResult без параметров. При отсутствии ошибок значение этой функции равно нулю. Например:

...

Writeln (' Введите имя файла');

Read (NameFil);

Assign (Fil, NameFil);

{$I-} { автоматический контроль отключен }

Reset (Fil);

Code:=IOResult;

If Code <> 0 Then Begin

Write ('Ошибка при открытии файла ',

NameFil,': ');

Case Code of

2: Writeln ('файл не найден');

3: Writeln ('путь к файлу не найден');

4: Writeln ('слишком много открытых файлов');

5: Writeln ('доступ закрыт');

6: Writeln ('нарушена информация в полях файла или системных областях');

8: Writeln ('недостаточно памяти');

10: Writeln ('несовместимые параметры окружения');

11: Writeln ('нераспознанный формат диска');

else

Writeln ('нераспознана');

end;

Exit;

end;

{$I+} { автоматический контроль включен }

...

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

Специальные операции

Эта группа операций предназначена для действий с элементами файловой системы ОС – каталогами и файлами. К ней относятся следующие процедуры:

·  удаление файла на диске

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

·  переименование файла

Rename (< имя_файловой_переменной >, <строка>);

·  установка текущего каталога

ChDir;

·  создание нового каталога

MkDir (<имя_подкаталога>);

·  удаление пустого подкаталога

RmDir (<имя_подкаталога>);

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

Пример объединения двух файлов

Из двух отсортированных в убывающем порядке файлов целых чисел IN1.DAT и IN2.DAT получается новый файл OUT. DAT, отсортированный в том же порядке.

Program Merge;

{ Учебный пример:

Создание файла OUT. DAT, отсортированного в убывающем порядке, объединенного из файлов IN1.DAT и IN2.DAT, так же отсортированных }

Var In1,In2,Out: File of integer;

x1,x2: integer; { вспомогательные переменные - элементы файлов }

Begin

{ Ставим в соответствие внутреннее и внешнее имя файлов }

Assign(In1,'IN1.DAT');

Assign(In2,'IN2.DAT');

Assign(Out,'OUT. DAT');

{$I-} { Запрет контроля ошибок в среде ОС }

{ Открываем и контролируем открытие файлов }

Reset(In1);

If IOResult <>0 Then Begin

Writeln ('Ошибка файла IN1.DAT');

Exit; End;

Reset(In2);

If IOResult <>0 Then Begin

Writeln ('Ошибка файла IN2.DAT');

Exit; End;

Rewrite(Out);

If IOResult <>0 Then Begin

Writeln ('Ошибка создания файла OUT. DAT');

Exit; End;

{$I+} { Обязательно восстанавливаем контроль за ошибками }

{ в цикле While обрабатываются элементы файлов }

While not (EOF(In1) or EOF(In2)) do

Begin

{ Читаем элемент файла, но указатель не перемещаем, иначе будет пропущен последний элемент }

Read(In1,x1); Seek(In1,FilePos(In1)-1);

Read(In2,x2); Seek(In2,FilePos(In2)-1);

If x1<x2 Then Begin

Write(Out, x2);

Seek(In2,FilePos(In2)+1)

end

else Begin

Write(Out, x1);

Seek(In1,FilePos(In1)+1)

end;

end;

{ Чтение одного из входных файлов закончено – переписываем конец незаконченного файла в выходной }

While not EOF(In1) do

Begin

Read(In1,x1);

Write(Out, x1);

end;

While not EOF(In2) do

Begin

Read(In2,x2);

Write(Out, x2);

end;

{ Закрытие использованных файлов – хороший стиль программирования}

Close (In1);

Close (In2);

Close (Out);

end.

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

На персональных компьютерах значительное количество информации обрабатывается в виде текстов, хранящихся в текстовых файлах. Их структура отличается от структуры обычных файлов тем, что содержимое текстового файла рассматривается как последовательность символьных строк переменной длины, разделенных комбинацией символов, называемой «конец строки». Эти файлы завершаются специальным кодом «конец файла».

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

Файлы, имеющие такую структуру, имеют стандартный тип:

Type <имя_типа> = text;

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

и имеют в своем составе элементы литерного типа, которые включают управляющие символы.

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

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

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

Так же используется процедура SetTextBuf, определяющая буфер для обмена с текстовым файлом, здесь не рассматривается.

В операциях, связанных с вводом-выводом, помимо процедур Read и Write, имеются две их модификации:

ReadLn (< имя_файловой_переменной >[,<список_ввода>]);

WriteLn (< имя_файловой_переменной >[,<список_ввода>]);

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством