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




Имя и параметры Процедура или функция Типы параметров Тип возвращаемого значения Действие
Assign(f,name) процедура f - переменная файлового типа, name - string   связывает файловую переменную f с файлом с именем name
Reset(f) процедура f - переменная файлового типа   открывает файл, ранее связанный с файловой переменной f с помощью процедуры Assign. Файл должен существовать на диске, в противном случае происходит ошибка времени выполнения. Текстовые файлы открываются только на чтение, типизированные файлы - на чтение и запись
Rewrite(f) процедура f - переменная файлового типа   создает и открывает новый файл, ранее связанный с файловой переменной f с помощью процедуры Assign. Если файл с указанным именем уже существует, то он удаляется, и вместо него создается новый файл. Текстовые файлы открываются только на запись, типизированные файлы - на чтение и запись
Append(f) процедура f - переменная типа Text   открывает текстовый файл на запись для добавления. Файловый указатель устанавливается в конец файла.
Close(f) процедура f - переменная файлового типа   закрывает файл
FileExists(name) функция name - string boolean возвращает True, если на диске имеется файл с именем name, в противном случае возвращает False
CanCreateFile(name) функция name - string boolean возвращает True, если можно создать файл с именем name, в противном случае возвращает False
Read(f,a,b,...) процедура f - переменная файлового типа, a,b - переменные простого типа, типа string или указатели   считывает значения из файла f в переменные a, b... Если файл типизированный, то типы переменных a, b... должны совпадать с базовым типом файла, а их значения считываются из файла в двоичном виде. Если файл текстовый, то переменные a, b... могут иметь различные типы, а их значения должны храниться в файле в текстовом виде
Write(f,a,b,...) процедура f - переменная файлового типа, a,b - выражения простого типа, типа string или указатели   записывает значения a, b... в файл f. Если файл типизированный, то типы значений a, b... должны быть совместимыми с базовым типом файла. Если файл текстовый, то значения a, b... выводятся в него в текстовом виде, при этом могут быть использованы форматы вывода
Readln(f,a,b,...) процедура f - переменная типа Text, a,b - переменные простого типа, типа string или указатели   считывает значения из текстового файла f в переменные a, b..., после чего пропускает символы до конца строки. Вызов readln(f) просто пропускает символы до конца строки
Writeln(f,a,b,...) процедура f - переменная типа Text, a,b - выражения простого типа, типа string или указатели   записывает значения a, b... в текстовый файл f, после чего записывает в него символ конца строки. Значения a, b... записываются в файл в текстовом виде, при этом могут быть использованы форматы вывода. Вызов writeln(f) просто записывает в файл символ конца строки
Eof(f) функция f - переменная файлового типа boolean возвращает True, если файловый указатель стоит на конце файла, и False в противном случае
Eoln(f) функция f - переменная типа Text boolean возвращает True, если файловый указатель стоит на конце строки, и False в противном случае
SeekEof(f) функция f - переменная типа Text boolean пропускает пробелы, символы табуляции и перехода на новую строку, после чего возвращает True, если файловый указатель стоит на конце файла, и False в противном случае
SeekEoln(f) функция f - переменная типа Text boolean пропускает пробелы, символы табуляции, после чего возвращает True, если файловый указатель стоит на конце строки, и False в противном случае
FileSize(f) функция f - переменная типа file integer возвращает количество элементов в типизированном файле
FilePos(f) функция f - переменная типа file integer возвращает позицию файлового указателя в типизированном файле (нумерация элементов в типизированном файле начинается с нуля)
Seek(f,n) процедура f - переменная типа file   перемещает файловый указатель в типизированном файле на n-тый элемент (нумерация начинается с нуля)
Truncate(f) процедура f - переменная типа file   удаляет все элементы типизированного файла с текущей позиции файлового указателя до конца файла
Rename(f,name) процедура f - переменная файлового типа, name - string   переименовывает файл, связанный с файловой переменной f. Файл должен быть закрыт
Erase(f) процедура f - переменная файлового типа   удаляет файл, связанный с файловой переменной f. Файл должен быть закрыт

Процедурный тип

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

procedure (список параметров)

или

function (список параметров): тип возвращаемого значения

При этом список параметров вместе с круглыми скобками могут отсутствовать. Например:

type proc= procedure (i: integer);
var
p1: proc;
p2: procedure;
f1: function: integer;

Процедурной переменной можно присвоить процедуру или функцию с совместимым типом:

procedure my(i: integer);
begin
...
end;
function f: integer;
begin

end;
...
p1:=my;
f1:=f;

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

p1(5);
write(f1);

Обычно процедурные переменные передаются как параметры для реализации обратного вызова:

procedure foreach(var a: array [1..100] of real; n: integer; p: procedure (var r: real));
var i: integer;
begin
for i:=1 to n do
p(a[i]);
end;

procedure mult2(var r: real);
begin
r:=2*r
end;

procedure print(var r: real);
begin
write(r,' ');
end;
...
foreach(a,10,mult2); // умножение элементов массива на 2
foreach(a,10,print); // вывод элементов

Эквивалентность типов

В Pascal ABC два типа считаются эквивалентными (равными), если совпадают их описания. Например, после описаний

type Arr= array [1..100] of integer;
var

a: Arr;
b: array [1..100] of integer;

можно присваивать массивы друг другу:

a:=b;

В типах записей, помимо типов полей, должны совпадать имена:

type
rec1 = record i,j: integer end;
rec2 = record x,y: integer end;
...
var r1: rec1; r2: rec2;
...
r1:=r2; // ошибка!

В типах формальных параметров процедур и функций имена могут не совпадать:

type
proc1 = procedure (i: integer);
proc2 = procedure (x: integer);
...
var p1: proc1; p2: proc2;
...
p1:=p2; // все в порядке

Подобная расширенная трактовка эквивалентности (по сравнению с Borland Pascal и Borland Delphi) позволяет передавать параметры составного типа (массивы, записи, процедурный и указательный) в процедуры и функции, не определяя для этих параметров новый тип:

procedure foreach(var a: array [1..100] of real; n: integer; f: function (r: real): real);
var i: integer;
begin
for i:=1 to n do
a[i]:=f(a[i]);
end;

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: