Типизированные файлы. Объявление файловой переменной
Объявление файловой переменной
Вначале можно объявить файловый тип:
Type <имя файлового типа>=File Of <тип компонента>;
Далее объявляется файловая переменная (с указанным идентификатором) одним из вариантов (ссылкой и без ссылки на файловый тип):
Var <идентификатор> :<имя файлового типа>; //ссылка на файловый тип
Var <идентификатор>: File Of <тип компонента>;//без ссылки на тип
Обычно <тип компонента> является типом записи.
Открытие файла
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре AssignFile(F;S)(п.1.8.2.1).
Процедуры Reset(F), Rewrite(F) (п.1.8.2.1) открывают файл для чтения и для записи, соответственно.
Процедуры обработки файла
Read(F,<список ввода>) ‑читает из открытого файла F в указанные переменные из списка ввода такого же типа, что и компоненты файла.
Write(F,<список вывода>) ‑записывает в открытый файл F значения из указанных переменных из списка такого же типа, что и компоненты файла.
Seek(F;N:Longint) ‑ устанавливает текущую запись файла под номером N (отсчет записей с нуля).
Закрытие файла осуществляется процедурой CloseFile(F).
Файлы последовательного доступа
Общая схема создания последовательного файла: открытие файла (AssignFile, Rewrite), цикл формирования и вывода записей (Write), закрытие файла (CloseFile).
Порядок чтения последовательного файла: открытие файла (AssignFile, Reset), цикл чтения и обработки записей (Read), закрытие файла (CloseFile).
Файлы прямого доступа
В отличие от Visual Basic, Delphi не имеет специальных файлов с прямым доступом, а используется последовательный файл, допускающий прямой метод доступа. Общая схема создания файла: cоздать пустой последовательный файл с максимально допустимым числом пустых записей (форматирование файла), а затем создать последовательный файл и обращаться к записям по их порядковому номеру, используя процедуру Seek(F,<номер записи>), а затем Read или Write соответственно.
Текстовые файлы
Текстовый файл представляет собой набор строк. При создании файла в конце каждой строки ставится маркер конца строки EOLN из двух символов #13 (CR ‑ возврат к началу строки) и #10 (LF ‑ перевод строки), а в конце файла символ #26 (EOF ‑ конец файла). Числовые данные хранятся в символьном представлении, логические ‑ в виде True или False.
Объявление файловой переменной
Type <имя типа>=TextFile;
Var <идентификатор>:<имя типа>; //ссылка на файловый тип или
Var <идентификатор>: TextFile; //без ссылки на файловый тип
Открытие файла
Append(F) ‑ открытие расширяемого файла.
Аналогично типизированному файлу используются процедуры AssignFile(F;S), Reset(F), Rewrite(F), Reset(F) (п.1.8.2.1).
Процедуры ввода‑вывода
Read(F,<список ввода>) ‑читает из открытого файла F в указанные переменные из списка ввода. При вводе числовых значений все окружающие пробелы, символы табуляции и маркеры конца строк пропускаются, и выделенная подстрока преобразуется в тип принимаемого поля ввода, при нарушении формата возникает исключительная ситуация. Ввод логических переменных не предуcмотрен.
ReadLn(F,<список ввода>) ‑читает из открытого файла F в переменные из списка и переходит на начало следующей строки.
Write(F;VI[,V2]...) ‑ записывает в файл одно или более значений V1,V2,... .
Любой элемент списка может иметь форму:
<выражение>[:<минимальная ширина поля>[:<ширина дробной части>]]. Если размер выводимого значения больше минимальной ширины, то значение дополнится слева пробелами, если большую длину, то выводятся все символы без усечения. Если ширина поля не указана, то значения выводятся плотно без всяких разделителей.
Writeln‑ выполняет те же действия, что и Write, а затем добавляет к файлу маркер конца строки.
Закрытие файла осуществляется процедурой CloseFile(F). Дополнительные процедуры
AssignPrn(F) ‑ информация выводится на принтер. Файл открывается процедурой Rewrite.
Eoln(F):Boolean -возвращает True при достижении конца строки файла.
Flush(F) ‑ выталкивает буфер файла в файл F и очищает буфер.
SeekEof(F):Boolean ‑ пропускает все пробелы, символы табуляции и маркеры конца строк и возвращает True при достижении конца файла.
SeekEoln(F):Boolean ‑ возвращает True при достижении конца строки файла, пропуская пробелы и символы табуляции.
SetTextBuf(F;Var B[;N:integer]) ‑ связывает буфер ввода/вывода B размера N с текстовым файлом F.
Примерввода чисел из текстового файла ’Fact.txt’:
Var F:TextFile; M: Array [1..100] Of Real;I:Integer; //переменные
Begin AssignFile(F,’Fact.txt’); Reset(F); I:=1;
While Not Eof(F) and (I<=100) Do Begin Read(F,M[I]);I:=I+1; End;
CloseFile(F); ...
End; //закрытие файла и окончание процедуры
Печать текста
Для вывода текстовой информации можно использовать стандартную процедуру AssignPrn (модуль Printers) (п. 1.8.2.3), которая связывает файловую переменную типа TextFile с текущим принтером.
Пример вывода на печать текста «Иванов»:
Procedure TForm1.Button1Click(Sender: TObject); Var Print: TextFile;
Begin AssignPrn(Print); Rewrite(Print); Writeln(Print,'Иванов');
System.CloseFile(Print); End;
Дата добавления: 2016-03-22; просмотров: 829;