Косвенные ссылки на модули возникают, например, когда программа или модуль A подключает модуль B, который, в свою очередь, использует модуль C. В этом случае считается, что A имеет косвенную ссылку на модуль С. Хотя содержимое C не будет доступно A, компилятору для создания исполняемого файла потребуются не только A и B, но и модуль C.
Например:
Основная программа A:
program A;
uses B; {подключаем модуль В}
begin
writeln(StringFromB); {выводим на экран строку из модуля В}
end.
Модуль B:
unit B;
interface
var StringFromB : string; {строка модуля В}
implementation
uses C; { подключаем модуль С }
begin
{формируем строку для модуля В с использованием строковой константы из модуля С}
StringFromB:= StringFromC+' и модуля B'
end.
Модуль C:
unit C;
interface
const StringFromC='Это строка из модуля С'; { строковая константа модуля С }
implementation
end.
В результате выполнения данной программы на экране появится фраза:
Это строка из модуляС и модуля B.
Таким образом, не смотря на то, что основная программа использует только модуль В, модуль С также обязан присутствовать на диске при компиляции программы.