Другой подход, немного устаревший, но все еще работающий, состоит в том, чтобы использовать ключевое слово ABSOLUTE, чтобы заставить одну память перекрывать другую, и сделать другой тип совместимым. Например, в блоке а, скажем, у вас есть следующее:
TYPE
TArrayA = Array[1..4] of integer;
затем в блоке b у вас есть следующее:
TYPE
TArrayB = Array[1..4] of integer;
Для совместимости вы можете сделать следующее:
VAR
InstanceA : TArrayA;
InstanceB : TArrayB;
InstanceBasA : TArrayA ABSOLUTE InstanceB;
Это создает переменную InstanceBasA типа ArrayA, которая перекрывает то же пространство памяти, что и переменная InstanceB. Это позволяет вам выполнить следующую команду:
InstanceA := InstanceBasA;