2010-09-07 12 views
19

korrekt festlegen Wie "Verzeichnisse/Conditionals" in den Projektoptionen und "Bibliothek" Pfad in Umgebungsoptionen festlegen? Delphi Hilfe sagt nicht viel über diese sehr wichtigen Einstellungen. Ich habe alle Arten von seltsamen Fehlern wegen der falschen Abhängigkeiten zwischen meinen VCLs.Wie "Verzeichnisse/Conditionals" und "Library" Pfad

1.

Ich habe eine große Menge von 3rd-Party-Kontrollen in einem Paket zusammengefasst ThirdPartyPackages_D7.dpk genannt. Dies ist nützlich, wenn ich Delphi neu installiere, weil ich nicht alle diese VCLs von Drittanbietern neu installieren muss.

Dann habe ich meine eigenen Steuerelemente in MyControls_D7.dpk, die von der ThirdPartyPackages VCL abhängt. Ich habe auch ein anderes Paket BlgPackage.dpk, das von MyControls abhängt.

Am Ende der Kette ist meine Anwendung (DPR-Projekt), die Steuerelemente in BlgPackage verwendet.

ThirdPartyPackages.dpk -> MyControls.dpk -> BlgPackage.dpk -> MyApplication.dpr 

Wenn ich ändern/bearbeiten, etwas zu dem zweiten Paket (MyControls.dpk) und die DVR-Anwendung erstellen, es funktioniert. Der Compiler sieht die Änderungen in diesem Paket. Wenn ich jedoch das Projekt schließe und das BlgPackage lade und kompiliere, gibt es eine unangenehme Nachricht, dass die Funktion xyz in MyControls nicht gefunden wird, weil ich sie lösche (ich habe die MyControls-Einheiten parallel zur Anwendungseinheit in die IDE geladen). Es scheint, dass beim Erstellen der Anwendung nur die DCU-Dateien für alle verwendeten Pakete aktualisiert werden, nicht jedoch für die DCP/BLP-Dateien.

Wie schreibe und kompiliere ich den Code in den Paketen, ohne die Pakete explizit in die IDE zu laden und sie zu erstellen? (Anmerkung: Ich habe einen bösen Fehler, der nicht erlaubt, mich zwischen den Projekten zu wechseln, ohne die IDE neu zu starten oder eine Gruppe von Projekten/packages (* .bpg) zur gleichen Zeit zu laden.)

2.

Ein weiteres Problem ist, dass ich die kompilierten Dateien (DCP/BPL/DCU) eines Pakets in seinem Ordner speichern möchte (zum Beispiel c: \ MyProjects \ Blg).
Wenn ich die Felder "Output directory", "Unit output directory" und "DCP output directory" des BlgPackage-Pakets in seinen Ordner setze, werden dort nicht nur die BPL/DCU/DCP-Dateien gespeichert, sondern auch die BPL/DCP-Dateien von MyControls wird dort gespeichert. Wie kann ich die Binärdateien jedes Pakets in einem separaten Ordner haben?


Delphi 7, Win XP, alle Projekte auf „je nach Bedarf neu erstellen“

Antwort

1

MY-Lösung (ein bisschen schmutzig, aber hey es funktioniert):

I ALL 3rd party libraries.controls in einem einzigen Paket geschnürt (ein Super-Paket). Ich habe alle meine Kontrollen in ein einziges Paket gesteckt.

Jetzt, wenn ich die Pakete zu einem anderen PC migrieren muss ich nur zwei Ordner kopieren und einfügen und zwei Pfade festlegen.

Funktioniert für mich - andere können nicht damit einverstanden sein und ich kann ihnen nicht die Schuld geben. Ich beschuldige die "Höllen-Designer" aus Borland/Embarcadero. Wenn Sie sich StackOverflow anschauen, werden Sie feststellen, dass bis jetzt niemand eine elegante Lösung dafür bot.

4
  1. Sie sollten explizit Pakete zusammenstellen - nur Paketdateien kompilieren ist nicht genug, und wie Sie führt zu Problemen bemerkt haben . In modernen Delphi-Versionen können Sie eine Projektgruppe (nicht sicher über Delphi 7) erstellen, die eine Anwendung und Pakete enthält, die Sie mit der Anwendung entwickeln möchten. Sie können einfach zwischen ihnen wechseln und Pakete kompilieren, ohne die Anwendung zu schließen/erneut zu öffnen .

  2. BlgPackage sollte keinen Zugriff auf MyControls-Paketquellen (über den Pfad "Library" oder über dasselbe Verzeichnis) haben, es sollte nur auf das bereits kompilierte MyControls-Paket zugreifen, andernfalls werden die Dateien von MyControls jedes Mal kompiliert, wenn Sie BlgPackage erstellen und die kompilierten Dateien werden in BlgControls DCU-Verzeichnis gespeichert


ADDED

Die "Library" Pfad sollte zu kompilierten Dateien führen (.dcp, .dcu) und (falls erforderlich) nur Ressourcendateien (.res, .dfm) - es genügt, Anwendungen und Pakete zu kompilieren, die das Paket "MyControls" benötigen. Sie können das Verzeichnis für kompilierte Dateien direkt in den Paketeinstellungen festlegen, und Sie sollten die Ressourcendateien (falls erforderlich) manuell in dasselbe Verzeichnis kopieren. Dieses Verzeichnis sollte im Pfad "Bibliothek" enthalten sein, oder Sie können ein Verzeichnis verwenden, das bereits im Pfad "Bibliothek" enthalten ist.

Der Pfad "Bibliothek" sollte nicht zu Quelldateien (.pas) führen, wenn Sie nicht möchten, dass diese Dateien jedes Mal kompiliert werden, wenn Sie Ihr BlgPackage oder eine Anwendung erstellen, die das Paket "MyControls" benötigt.

+0

@ Serg-ich glaube nicht, dass die No2 funktioniert.Die Delphi 7-Hilfe besagt Folgendes: "Wenn Sie versuchen, Ihr Paket mit einer Datei zu erstellen, die sich nicht im Bibliothekspfad befindet, erhalten Sie einen Compilerfehler". Daher kann ich mein Paket nicht kompilieren, wenn ich seinen Pfad aus der Bibliothek entferne. – Ampere

+0

Ich habe das gemacht und jetzt kann ich das Projekt nicht kompilieren. Ich kann keine der DCUs finden. Diese DCU gehört zu MyControls. Es befindet sich in demselben Ordner, in dem sich die MyControls PAS-Dateien befinden. – Ampere

+0

@Altar - Speicherung von .DCU im selben Ordner wie .PAS ist eine schlechte Praxis und sollte vermieden werden. DCUs sollten über den Pfad "Library" verfügbar sein, während Quellen (.pas) normalerweise nicht verfügbar sind. In jedem Fall können Sie die DCU, die Probleme verursacht, manuell in den Ordner kopieren, der über den Pfad "Library" verfügbar ist, wenn Sie aus irgendeinem Grund den DCU-Pfad nicht in den Paketoptionen festlegen möchten. – kludg

3

Ich benutze viel einfachere Möglichkeit für 3rd Partie Komponenten und Neuinstallation von Delphi.

  • Öffnen regedit und [HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Delphi/xxx] finden, wo xxx Version und Export ganze Zweig.
  • Datei öffnen und Schlüssel löschen LMKEY, LMLIC.
  • Copy C: \ Programme \ Borland \ Delphi x \ Projects \ Bpl Ordner an einen anderen Ort
  • Copy C: \ Programme \ Borland \ Delphi x \ Imports an einen anderen Ort
  • Neu installieren Delphi einschließlich aller Updates und GExpert
  • Import zuvor gespeicherten Register
  • wiederherstellen Bpl und Importe Ordner

und whoala, Delphi mit allen 3. partie Komponenten und IDE-Einstellungen ist zurück. Die einzige Einschränkung besteht darin, dass sich alle Komponenten vor und nach der Neuinstallation von Delphi im selben Ordner befinden müssen.

Dadurch werden auch die TeamSource-Einstellungen wiederhergestellt. Wenn Sie Windows erneut installieren, stellen Sie sicher, dass Windows-Benutzer denselben Benutzernamen wie zuvor haben.

+0

Ich benutze diesen "Hack" seit Jahren. Danke trotzdem. +1, wie andere es verwenden können. PS: Vergessen Sie nicht den HKCU-Schlüssel (gleicher Ort:/SOFTWARE/Borland/Delphi/xxx). Ich denke LMKEY ist HKLM, aber was ist LMLIC? – Ampere

+0

LMKEY und LMLIC sind Lizenzinformationen zu Delphi und wenn Sie sie ebenfalls wiederherstellen, würde Delphi denken, dass es nicht lizenziert ist oder so ähnlich. –