1. in dem Projekt gibt es in deinem
DCU-Ausgabeverzeichnis nur eine
DCU der
Unit A.
Wenn du in
deinen USES den Unitnamen von
A angibst, dann wird deine
DCU benutzt,
aber, verwendest du noch andere Dateien, wo du die originale
DCU von DELPHI verwendest, die in sich eine
Unit A einbinden,
dann sind die ja bereits fertig kompiliert und haben daher natürlich weiterhin die
originale DCU A gelinkt,
womit es dann in deiner EXE
zwei Mal die
A gibt.
Willst du etwas Fixen, und
du bist nicht der Einzige, welcher diese
Unit linkt und der Fix soll
überall rein,
dann mußt du also
alle Units kopieren und neu kompilieren, auch Jene, welche diese
Unit ebenfalls verwenden und die auch diese verwenden usw.
Da kommt man womöglich/vermutlich mit Hooks besser, wenn man nicht der Einzige ist, der diese
Unit einbindet.
Oder der Kompiler gibt den Hinweis aus, dass
Unit X mit einer anderen Version von A kompiliert wurde, und er bricht den Kompiliervorgang ab.
Zuweilen stellt Delphi von ganz alleine beim Kompilieren fest, dass es da einen Konflikt gibt und weist darauf hin.
Zumindest Delphi 7 und älter konnten sowas. Geht das heute nicht mehr?
Eigentlich ist wichtig, dass man die veränderten Sourcen ins Projekt aufnimmt und sicherstellt, dass der Kompiler nur diese und die zugehörigen DCUs finden kann.
D. H.: Die "Originale" sollten in allen Pfadangaben
hinter den eigenen, veränderten Sourcen / DCUs zu finden sein (oder im Idealfall garnicht zu finden sein).
Wurde eine
Unit mit Deiner veränderten FMX.ListView.pas im Uses kompiliert und Dein Projekt enthält eine weitere
Unit, die mit der originalen FMX.ListView.pas im Uses kompiliert wurde, so sollte der Kompiler dies bemerken und Dich darauf hinweisen.
Im Zweifelsfalle nehme ich immer alle Units in die
DPR auf, die "irgendwo" in einer
Unit des Projektes per Uses aufgerufen werden und bei denen die Möglichkeit eines Konfliktes bestehen könnte. Damit habe ich bisher immer alle Konflikte auflösen können (auch wenn die
DPR dadurch schonmal etwas unübersichtlich lang werden kann).
Der
DCU-Ausgabepfad ist bei mir
immer gesetzt, so dass die Original-DCUs eventuell neu zu kompilierender "delphieigener Units" nicht überschrieben werden.