Такая ошибка случается, если один из них объявлен как type. И это совершенно закономерно - в паскале строгий контроль соответствия типов, без неявных преобразований. Преподают потому что удобен для обучения: не позволяет заглядывать в дуло. Как это часто бывает с си. Раз ты сам указал, что это различные типы - очень странно возмущаться, что компилятор выполняет твои указания и не дает их смешать.