Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Verwendung von Packages ohne Installation in der IDE (https://www.delphipraxis.net/189212-verwendung-von-packages-ohne-installation-der-ide.html)

Baumonaut 18. Mai 2016 09:58

Verwendung von Packages ohne Installation in der IDE
 
Hallo zusammen

Wir haben diverse Komponenten selbst entwickelt und momentan als Packages in der IDE (XE7) installiert. Diese Packages werden bis jetzt in einem separaten Repo verwaltet. Das funktioniert soweit so gut und die registrierten Klassen können aus der Tool-Palette verwendet werden. Es sind einige Klassen regsitriert (procedure Register), die danach in Forms verwendet werden.

Nun wollen wir die Komponenten als Git-Submodule in das jeweilige Projektrepo einbinden wo sie benutzt werden. Mit einem Gruppenprojekt können die Packages eingebunden werden. Vor der Applikation können die Packages gebuildet werden, damit die .bpl-Files generiert werden. Diese können danach in der Applikation eingebunden werden. Nun gibt es aber Packages die Klassen enthalten die bisher in der Tool-Palette registriert waren (wie oben beschrieben). Diese werden jetzt nicht mehr registriert, da die Packages nicht mehr installiert werden. Wenn ich nun eine Unit öffne, die eine Klasse der Tool-Palette verwendet ist kommt der Fehler

Zitat:

Class XYZ not found. Ignore the error and continue? NOTE: Ignoring the error may cause components to be deleted or property values to be lost.
So wie ich das interpretiere, sucht die IDE nach der Klasse in der Tool-Palette, kann sie aber nicht finden weil sie nicht mehr regsitriert ist. Das kompilieren und erzeugen funktioniert hingegen problemlos.

Gibt es einen Weg, damit die bestehenden Klassen weiterhin verwendet werden können OHNE die Packages zu installieren und OHNE den Registry-Key "Known IDE Packages" zu modifizieren?

Uwe Raabe 18. Mai 2016 10:05

AW: Verwendung von Packages ohne Installation in der IDE
 
Zitat:

Zitat von Baumonaut (Beitrag 1338341)
Gibt es einen Weg, damit die bestehenden Klassen weiterhin verwendet werden können OHNE die Packages zu installieren

Nein! Die IDE instanziert die Klassen zusammen mit dem Form, damit das Design überhaupt funktioniert. Dazu muss die Klasse in einem Design-Package registriert sein.

Was spricht denn dagegen, die Packages zu installieren?

Baumonaut 18. Mai 2016 10:35

AW: Verwendung von Packages ohne Installation in der IDE
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1338343)
Was spricht denn dagegen, die Packages zu installieren?

Wenn unterschiedliche Projekte vorhanden sind (Applikation A und B) und diese verwenden unterschiedlche Stände der Komponenten (Submodule im Repo) müssen diese manuell installiert werden.
Arbeitet der Entwickler zuerst an A und nachheer an B und vergisst dabei den Komponentenstand von A zu deinstallieren und den von B zu installieren verwendet er einen falschen Kompnentenstand bei B.

Fritzew 18. Mai 2016 10:43

AW: Verwendung von Packages ohne Installation in der IDE
 
Dann hilft nur die Komponenten im Code zu erzeugen und nicht mit der IDE auf die Form zu setzen.
Also z.b im FormCreate diese zu erzeugen.

uligerhardt 18. Mai 2016 12:03

AW: Verwendung von Packages ohne Installation in der IDE
 
Zitat:

Zitat von Baumonaut (Beitrag 1338346)
Zitat:

Zitat von Uwe Raabe (Beitrag 1338343)
Was spricht denn dagegen, die Packages zu installieren?

Wenn unterschiedliche Projekte vorhanden sind (Applikation A und B) und diese verwenden unterschiedlche Stände der Komponenten (Submodule im Repo) müssen diese manuell installiert werden.
Arbeitet der Entwickler zuerst an A und nachheer an B und vergisst dabei den Komponentenstand von A zu deinstallieren und den von B zu installieren verwendet er einen falschen Kompnentenstand bei B.

War da nicht was mir bds.exe -r XXX? Man muss halt immer drandenken, das richtige XXX für das aktuelle Projekt zu nehmen.

Uwe Raabe 18. Mai 2016 12:27

AW: Verwendung von Packages ohne Installation in der IDE
 
Zitat:

Zitat von uligerhardt (Beitrag 1338352)
War da nicht was mir bds.exe -r XXX? Man muss halt immer drandenken, das richtige XXX für das aktuelle Projekt zu nehmen.

Das ist zwar richtig, aber meiner Meinung nach nicht praktikabel.

Es gibt auch noch andere Punkte dabei zu berücksichtigen. Hat man z.B. ein Projekt auf und dazu das passende Package in Version X in der IDE geladen und kommt dann auf die Idee, ein Form eines anderen Projekts zu öffnen, das aber eine Version Y dieses Packages erfordert (z.B. weil neue Properties), dann nutzt das auch nichts. Man kann das auch noch detaillierter in meinem Artikel There Can Only Be One! nachlesen.

Ich habe es hier mittlerweile schon unter Laborbedingungen hinbekommen, daß beim Wechsel des Projekts die passenden Packages geladen (und die unpassenden entladen) werden. Das wäre mit dem aktuellen Verhalten der IDE aber schon das Ende der Fahnenstange. Allerdings, für die meisten Anwendungsfälle würde das vielleicht ausreichen.

Mein diesbezüglicher Wunsch an die IDE-Entwickler: Wenn ein Form wegen fehlender Komponenten nicht vollständig geladen werden kann, dann lasst bitte die DFM in Ruhe!

Baumonaut 19. Mai 2016 08:17

AW: Verwendung von Packages ohne Installation in der IDE
 
Danke für eure Antworten!

Zitat:

Zitat von Uwe Raabe (Beitrag 1338354)
Ich habe es hier mittlerweile schon unter Laborbedingungen hinbekommen, daß beim Wechsel des Projekts die passenden Packages geladen (und die unpassenden entladen) werden. Das wäre mit dem aktuellen Verhalten der IDE aber schon das Ende der Fahnenstange. Allerdings, für die meisten Anwendungsfälle würde das vielleicht ausreichen.

Interessanter Ansatz. Da wäre ein Teil die Registry-Keys anzupassen. Aber das Laden der jeweiligen Packages muss auch noch angestossen werden.
Geladen werden diese Packages sicher beim Start der IDE und gleichzeitig muss es möglich sein das auch zu machen wenn die IDE geöffnet ist. Das Package kann ja auch via Mneu-Item installiert werden.

Uwe Raabe 19. Mai 2016 09:17

AW: Verwendung von Packages ohne Installation in der IDE
 
Zitat:

Zitat von Baumonaut (Beitrag 1338440)
Da wäre ein Teil die Registry-Keys anzupassen. Aber das Laden der jeweiligen Packages muss auch noch angestossen werden.
Geladen werden diese Packages sicher beim Start der IDE und gleichzeitig muss es möglich sein das auch zu machen wenn die IDE geöffnet ist. Das Package kann ja auch via Mneu-Item installiert werden.

Das Prinzip dahinter entspricht ungefähr dem, was ich in dem Artikel beschrieben habe. Dabei bringt jedes Projekt eine Liste der benötigten (required) und verbotenen (forbidden) Packages mit. Beim Laden bzw. Aktivieren des Projekts werden die verbotenen Packages entfernt und die benötigten geladen. Wechselt man dann das Projekt, werden zunächst die nicht mehr benötigten (vom alten Projekt) und die verbotenen (vom neuen) entladen, bevor die neuen benötigten geladen werden. Die Packages bleiben also nur solange in der IDE registriert, wie das Projekt aktiv ist.

Wie gesagt, in den Grundzügen funktioniert dieser Ansatz schon. Es ist halt noch viel drumherum zu machen. Z.B.
  • Verwaltung der benötigten und verbotenen Packages mit der dazu nötigen GUI
  • wie werden die Package-Pfade in Relation zum Projektverzeichnis verwaltet
  • wie hindere ich die IDE daran dazwischenzufunken
  • usw.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz