Программирование на языке 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