Описание языка PascalABC.NET | страница 37
Для описания текстового файла используется стандартное имя типа text, бестиповые файлы имеют тип file, а для описания типизированного файла используется конструкция fileof тип элементов:
var
f1: fileof real;
f2: text;
f3: file;
В качества типа элементов в типизированном файле не могут фигурировать указатели, ссылочные типы, а также тип записи, содержащий ссылочные поля или указатели.
Стандартные файловые процедуры и функции описываются в пункте Процедуры и функции для работы с файлами.
Кроме того, в .NET имеется ряд классов, связанных с работой с файлами.
Эквивалентность и совместимость типов
Говорят, что типы T1 и T2 совпадают, если они имеют одно имя либо же определены в секции type в виде T1 = T2. Таким образом, в описаниях
type
IntArray = array [1..10] of integer;
IntArrayCopy = IntArray;
var
a1: IntArray;
a2: IntArrayCopy;
b1,c1: array [1..15] of integer;
b2: array [1..15] of integer;
переменные a1 и a2 и переменные b1 и c1 имеют один и тот же тип, а переменные b1 и b2 - разные типы.
Говорят, что типы T1 и T2 эквивалентны, если выполняется одно из следующих условий:
* T1 и T2 совпадают
* T1 и T2 - динамические массивы с совпадающими типами элементов
* T1 и T2 - указатели с совпадающими базовыми типами
* T1 и T2 - множества с совпадающими базовыми типами
* T1 и T2 - процедурные типы с совпадающим списком формальных параметров (и типом возвращаемого значения - для функций)
Если типы эквивалентны только если их имена совпадают, то говорят, что имеет место именная эквивалентность типов. Если типы эквивалентны если они совпадают по структуре, то говорят, что имеет место структурная эквивалентность типов. Таким образом, в PascalABC.NET имеет место именная эквивалентность для всех типов, кроме динамических массивов, множеств, типизированных указателей и процедурных типов, для которых имеет место структурная эквивалентность типов.
Только если типы T1 и T2 эквивалентны, фактический параметр типа T1 может быть подставлен вместо формального параметра-переменной типа T2.
Говорят, что типы T1 и T2 совместимы, если выполняется одно из следующих условий:
* T1 и T2 эквивалентны
* T1 и T2 принадлежат к целым типам
* T1 и T2 принадлежат к вещественным типам
* Один из типов - поддиапазон другого или оба - поддиапазоны некоторого типа
* T1 и T2 - множества с совместимыми базовыми типами
Говорят, что значение типа T2 можно присвоить переменной типа T1 или тип T2 совместим по присваиванию с типом T1, если выполняется одно из следующих условий: