Этот вид совместимости требуется при присваивании значений, например в операторе присваивания или при передаче значений в подпрограмму.
Значение типа T1 является совместимым по присваиванию с типом T2 (то есть допустим оператор T1 := T2), если выполняется одно из следующих условий.
T1 и T2 — тождественные типы (кроме файловых или типов, содержащих элементы файлового типа).
T1 и T2 — совместимые порядковые типы, при этом значения типа T2 попадают в диапазон возможных значений T1.
T1 и T2 — вещественные типы, при этом значения типа T2 попадают в диапазон возможных значений T1.
T1 — вещественный тип, а T2 — целочисленный.
T1 и T2 — строковые типы.
T1 — строковый тип, а T2 — символьный (char).
T1 и T2 — совместимые множественные типы, при этом все значения типа T2 попадают в диапазон возможных значений T1.
T1 и T2 — совместимые типы указателей.
T1 — тип pchar, а T2 — строковая константа (только при разрешении расширенного синтаксиса директивой {$X+}).
T1 — тип pchar, а T2 — символьный массив с нулевой базой вида array [0 .. n] of char (только при разрешении расширенного синтаксиса директивой {$X+}).
T1 и T2 — совместимые процедурные типы.
T1 представляет собой процедурный тип, а T2 — процедура или функция с идентичным типом результата и соответствующими параметрами.
На этапе компиляции и выполнения выдается сообщение об ошибке, если совместимость по присваиванию необходима, а ни одно из условий предыдущего списка не выполнено.