Программирование на языке Object Pascal

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

?беспечивает сохранение всех новых записей в файле и регистрирует файл в каталоге.

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

Процедуры и функции для работы с файлами:

Eof(); - возвращает true если достигнут конец файла;

Eoln(); - возвращает true если достигнут конец строки;

SeekEof(); - возвращает true если до конца файла остались только символы разделители ( , tab);

SeekEoln();- возвращает true если до конца строки остались только символы разделители ( , tab);

AssignPRN(); - процедура присваивает дескриптор текстового файла принтеру;

Erase(); - процедура стирает файл (перед стиранием необходимо закрыть файл);

Flush(); - процедура очищает внутренний буфер файла (при этом все изменения сохраняются на диске);

ReName(); - процедура переименовывает файл…

Процедуры чтения записей:

Read(); - читает информацию из файла;

ReadLn(); - читает информацию из файла;

Write(); - записывает информацию в файл;

WriteLn(); - записывает информацию в файл.

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

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

В конце файла ставится специальный символ Eof.

Текстовые файлы открываются с помощью трех процедур:

Reset - для чтения;

RewRite - для записи;

Append - для добавления.

Чтение осуществляется с помощью процедуры Read и ReadLn, запись - Write и WriteLn.

Пример:

 

WriteLn(f,ABC;12;x;0,5);[ABC12x5E-1]

 

При переводе переменных типа String количество считываемых процедурой и помещенных в строки символов равно максимальной длине строки, если раньше не встретится признак EoLn; этот признак в строку не помещается. Если количество символов во входном потоке данных больше максимальной длинны строки, то лишние символы отбрасываются. При вводе числовых переменных процедура Read работает следующим образом: все ведущие знаки разделители и признаки конца строк пропускаются до появления первого значащего символа (и наоборот: любой из перечисленных символов, а так же признак конца файла считается концом подстроки). Выделенная таким образом подстрока рассматривается как строковое выражение числовой переменной; затем она конвертируется во внутреннее представление числа и результат присваивается переменной.

 

Ansistr = 256 символов.

WriteStr = 4 Гб.

 

a b c EoLn 209 EoLn 2 3 a5 2,5 EofVar: TextFile;: string;: string [2];, b, c: integer;: real;(f,c:\FEI\alpha.txt);(f);(f,s)[s=_abc](f,a);[a=209](f,b,c);[b=2 c=3](f,x); [ошибка a5 перевести нельзя]

End;

 

Работа с текстовыми файлами.

 

)._Пример Вывод текстового файла на экран:

 

Procedure TForm1.Button1.Click (…);: TextFile;: string;(f,c:\alpha.txt);

Reset(f);not Eof(f) do begin(f, s);.Lines.Add(s);;

End;

 

Если в конвертируемой строке был нарушен требуемый формат - возникнет ошибка ввода / вывода.

Процедура Write и WriteLn обеспечивает вывод информации в текстовый файл. Список вывода аналогичен процедуре Read, за исключением числовых значений, для которых существует специальный формат: элемент [:m [: n]];

m - минимальная ширина поля, в которое будет помещен элемент;

n - максимальное количество знаков после ( , ).

Процедура WriteLn аналогична процедуре Write, но в конце добавляется признак конца строки.

)._Пример Слияние двух текстовых файлов в третий:

 

Procedure TForm1.Button1.Click (…);, f2, f3: TextFile;: string;(f1,c:\Fei\alpha1.txt);(f2,c:\Fei\alpha2.txt);(f3,c:\Fei\alpha3.txt);(f1);(f2);(f3);not Eof(f1) do begin(f1,s);(f3,s);;not Eof(f2) do begin(f2,s);(f3,s);;(f1);(f2);(f3);(OK!);;

 

Обработка ошибок при работе с файлами

 

При обращение к файлам (т.е. к диску) могут возникать ошибки, приводящие к ненормальному завершению работы приложения. Эти ошибки необходимо предусмотреть и соответствующим образом обработать. В основном ошибки возникают при открытии файла, реже при чтении и записи из них. Что бы обрабатывать ошибки ввода / вывода (ошибки при работе с файлами) необходимо использовать соответствующую директиву компилятора (специальным образом оформленные указания компилятору внутри кода программы). Директиву заключают в { }, внутри ставится обозначение соответствующей директивы, + или -:

{}:

отключить контроль ошибок ввода / вывода: {I-};

включить контроль ошибок ввода / вывода: {I+}.

Если делается попытка чтения несуществующего файла или логического устройства, то возникает ошибка времени выполнения (from time error). Тип ошибки можно определить с помощью использования встроенной функции - IOResult: word; (эта функция возвращает результат последней операции ввода / вывода; если операция прошла успешно, функция возвращает (0), иначе возвращает код ошибки ввода / вывода).

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

TForm1.Button1.Click (…);: TextFile;: string;(f, Edit1.Text);

{I-}(f);IOResult<>0 then