9.3. Совместимость для присваивания
Эта совместимость необходима, когда значение какого-то выражения присваивается переменной, типизированной константе, функции. Если значение объекта типа Т2 присваивается объекту типа Т1, то это возможно в следующих случаях:
- Т1 и Т2 - идентичные типы и не являются файловыми типами или структурированными типами, содержащими компоненты файлового типа на любом уровне структурирования;
- Т1 и Т2 - совместимые порядковые типы и значение типа Т2 находится в границах возможных значений объекта типа Т1;
- Т1 и Т2 - вещественные типы и значение типа Т2 находится в границах возможных значений объекта типа Т1;
- Т1 - вещественный тип, а Т2 - целый тип;
- Т1 и Т2 - строки;
- Т1 - строка, а Т2 - символ;
- Т1 и Т2 - совместимые типы-множества и все компоненты значения типа Т2 находятся в множестве Т1;
- Т1 и Т2 - совместимые указатели;
- Т1 - типа PChar, a T2 - строковая константа (только при наличии ключа компилятора {$Х+} - см. п. 17.7.1);
- Т1 - типа PChar, a T2 - массив символов, заканчивающийся символом с кодом 0 (только при наличии ключа компилятора {$Х+} - см. п. 17.7.1);
- Т1 и Т2 - совместимые процедурные типы;
- Т1 - процедурный тип, а Т2 - процедура или функция с идентичным типом результата, числом параметров и попарной идентичностью типов этих параметров;
- Т1 и Т2 - объектные типы (см. п. 14) и Т2 - потомок Т1;
- Т1 и Т2 - указатели на объектные типы (см. п. 14) и Т2 - указатель на потомок типа, на который указывает Т1.
|