Вы можете получить список всех модулей, связанных с исполняемым файлом (т. Е. Во время выполнения) из ресурсов.Существует ресурс с именем PACKAGEINFO
, который содержит список всех юнитов.Вы можете найти некоторую обратную информацию здесь .Возможно, вы можете получить эту информацию из расширенного RTTI (доступно с Delphi 2010).
О том, как определить, что модуль находится первым в предложении .dpr using, я не вижу никакого способа сделать это легко во время выполнения,Список в PACKAGEINFO
находится не в этом порядке.Это можно сделать во время компиляции, проанализировав содержимое .dpr и проверив его условие использования.
Единственный способ угадать, какая единица измерения была задана первой, - это использовать глобальную переменную в общей единице:
var LatestUnitSet: (oneUnit, anotherUnit);
Затем в разделе инициализации каждого устройства:
initialization
LatestUnitSet := OneUnit;
...
initialization
LatestUnitSet := anotherUnit;
...
Затем проверьте на LatestUnitSet
, чтобы увидеть, какой из них был инициализирован последним.