Typen und Konstanten kann man als Alias in Unit1 "neu" deklarieren und sie somit aus UnitX in die Unit2 durchreichen.
Methoden, Property-Typen, Methoden-Result-Typen usw., welche über einen Vorfahren aus UnitX in Unit1 abgeleitet wurden, lassen sich indirekt zugreifen. (so lange man nicht diesen Typen eines Parameter/Result direkt verwenden will)
Es gibt ein
{$IF Declared(...)}
, aber damit kannst du nur auf etwas (Variable/Konstante/Funktion/Typ/...) prüfen, welches sich in deinem Scope befindet.
Also eine
Unit in einer anderen
Unit (egal ob interface oder implementation) findet sich somit nicht.
DEFINEs sind nicht modulübergreifend.
Ausnahme, wenn sie als Compiler-Option rein kommen. Oder überall via INCLUDE-Datei.
Was einfach ginge, zur Laufzeit, nach einem Export oder einer Ressource suchen, welcher über die andere
Unit rein kommt.
Oder über die erweiterte
RTTI etwas davon finden.