2009-06-28 5 views
9

Ich möchte eine Fehlerbehebung von QC auf eine Delphi 2009-Einheit (DBClient wie es passiert) anwenden. Ich weiß, dass ich das Gerät in ein anderes Verzeichnis kopieren und die Änderung an der Kopie vornehmen muss. Wie bekomme ich dann Delphi, um diese Einheit zu kompilieren und sie zugunsten der DCU zu verwenden, die bereits existiert?Wie wird eine bestimmte Einheit aus der VCL neu kompiliert?

Antwort

16

Wenn Sie die ursprüngliche .Pas-Datei nicht ändern möchten, tun Sie dies, indem Sie die .Pas-Datei in meinen Anwendungsordner kopieren, dann wählen Sie das erstellte Projekt, es wird eine neue dcu-Datei in meinem Anwendungsordner erstellt anstelle des Originals verwendet werden.

+15

Beachten Sie, dass dies nicht funktioniert, wenn andere VCL-Einheiten von der geänderten abhängen, in diesem Fall müssen sie ebenfalls neu kompiliert werden. Andernfalls schlägt das Verknüpfen der Anwendung fehl. – mghie

+2

Und es wird nicht funktionieren, wenn Sie Runtime-Pakete verwenden und mit "Use Debug DCUs" aufpassen –

2

Es ist eine Art letzter Ausweg (und nicht von CodeGear unterstützt), aber ich mache etwas ähnliches wie Mohammed, wenn nötig. Außer, dass ich keine modifizierten Einheiten in den Anwendungsordner lege, lege ich sie in ihren eigenen Ordner mit dem Rest meines Bibliothekscodes und schließe diesen Ordner in meinen Bibliothekspfad ein, wo er von allen meinen Projekten verwendet wird. Es hindert mich auch daran, mehrere (möglicherweise etwas unterschiedliche) Kopien herumhängen zu lassen.

Ich mache auch einen Punkt der Überprüfung von Updates, um zu sehen, was sich geändert hat, so kann ich entweder die geänderten Einheiten entfernen oder die Änderungen auf die neueren (und vermutlich besser) Einheiten von CodeGear erneut anwenden.

0

Ich habe das nie selbst gemacht, aber es gibt Projekte in {RAD}\source\rtl zusammen mit Batch-Build-Skript. Ich glaube, das macht die Neukompilierung von RTL-Funktionen einfach. Andere Einheiten sollten leichter neu kompiliert werden.

Wenn Sie Änderungen lokal vornehmen möchten und die Einheiten nicht häufig von anderen RTL/VCL-Einheiten verwendet werden, besteht die einfachste Möglichkeit darin, Kopien geänderter Einheiten getrennt von ihrer Standardposition zu platzieren.

Eine andere Option ist Run-Time-Patching aka Umleitung.