кто писал на С
Кто писал на C, тот в цирке не смеётся того ломает прежде всего от невозможности разыменовать возврат ADR. То есть нельзя сделать a := ADR(a)^ как это допускается в Си (a = *&a), потому что ADR возвращает DWORD, а не POINTER. Будь иначе, можно было бы обойтись без объявления лишних переменных и типов.