tdump gibt nur die statischen Imports und vielleicht auch DelayedImports an, von dem einen Modul (EXE).
Du mußt also auch noch alle deine DLLs und BPLs durchgehn.
Und dann auch noch die Hooks im Windows, wo dir auch noch was untergeschoben werden kann. (Maustreiber, Teamviewer, Acrobat, ...)
erstmal "Zufall",
aber grundsätzlich ist es so, dass bei deiner EXE, vor dem eigentlichen Start, die ImportListe durchgegangen wird und dort wird einfach der Liste nach alles geladen (von oben nach unten), beim Laden der einzelnen
DLL/
BPL dann wiederum (vorher) das, was sie lädt usw.
Die Liste(n) entsteht, beim Linken/Kompilieren, in welcher Reihenfolge es dort eingebunden wurde. (Delphi sortiert da nichts)
Dann vielleicht noch DelayedLoading, was erst beim ersten Aufruf eines Imports geladen wird,
und natürlich das dynamische Laden (LoadLibrary/LoadPackage), was irgendwo mitten in der Ausführung (im Intitialisazionscode oder später im Code) geladen wird.
Ist ähnlich, wie mit deinen Units.
Es geht erst in der
DPR/DPK die Liste durch, dann das USES im Interface-Abschnitt der
PAS ... da beides in der Reihenfolge der Deklaration
und zum Schluß auch noch das USES im Implementations-Teil ... dort kann Delphi sich frei entscheiden, in welcher Reihenfolge (für dich also zufällig).
Beim Laden einer
Unit wird dann wieder dessen USES abgehandelt usw.
Also abgesehn vom Implementations-Uses, kann man die "statischen" Verlinkungen der
DLL/
BPL mit der Art der Reihenfolge bei den Units vergleichen.
Das Implementations-Uses und die delayed+dynmamischen DLLs und die Hooks, bringen hier bissl Chaos rein, aber sonst ist die Reihenfolge eigentlich fest.
Im Programm gibt es Events, um sich über das Laden von
DLL/
BPL informieren zu lassen,
bzw. ich hatte mir auch mal aus der PEB die Infos rausgeholt ... da gibt es 3 Listen, wovon eine der Reihenfolge des Ladens enspricht, inkl. einer Angabe "warum" es geladen wurde (statisch, delayed oder dynamisch).