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