![]() |
Installation Komp.Package - Kreuzverlinkungen
Ich habe nun eine Komponente als DesignPattern entworfen. Diese wird nicht in der Komponenten-Library registriert. Von dieser Komponente ausgehend leite ich Klassen ab, welche als Komponente letztendlich registriert werden. Eingebunden wird das D-Pattern ganz normal unter "interfaces, uses".
Ich erstelle zur Zeit 2 Packages. Ein Package für das Register "Beta" und eines für das Register "Stable". Sobald ich eines der beiden Packages eingebunden habe, will das nächste Package das erste Package als "required" zusätzlich einbinden. Und das verstehe ich nicht. Ich mein, ich binde schließlich auch "Classes" wie üblich unter "uses" mit ein. Aber dies ist keine ursache für ein "required" des anderen Packages. Das DesignPattern sieht folgendermaßen aus ...
Delphi-Quellcode:
Eine registrierte Komponente baut sich folgendermaßen auf ...
unit DkComponentDesignPattern;
interface uses Classes; type TDkComponentDesignPattern = class( TComponent ) protected procedure Test ( pComponent : TComponent; pOperation : TOperation ); override; end; implementation procedure TDkComponentDesignPattern.Notification ( pComponent : TComponent; pOperation : TOperation ); begin inherited Notification( pComponent, pOperation ); if ( pOperation = opRemove ) then pComponent := nil; end; end.
Delphi-Quellcode:
Es sollte doch auch funktionieren beide Packages unabhängig voneinander zu erstellen.
unit DkTest;
interface uses Classes, DkComponentDesignPattern; type TDkTest = class( TDkComponentDesignPattern ) end; procedure Register ( ); implementation procedure Register ( ); begin RegisterComponents( 'Beta', [ TDkTest ] ); end; end. |
Re: Installation Komp.Package - Kreuzverlinkungen
Leider gab es noch keine Antwort auf meine Problemstellung. Deshalb spreche ich das Thema noch einmal an.
Sollte ich mich doch unklar ausgedrückt haben, so fragt bitte noch einmal nach. Danke, Christian |
Re: Installation Komp.Package - Kreuzverlinkungen
Letzter Versuch.
Ich entwerfe eine Komponente als DesignPattern. Diese Komponente wird nicht in der Component Library von Delphi installiert, sondern bildet nur die Grundlage für weitere abgeleitete Komponenten. Diese werden in eigene Packages eingebunden und dann installiert. Jedes Package soll unabhängig von anderen Packages instalilert werden können. Das bedeutet auch, dass beim Complieren des Packages kein anderes Package eingebunden werden soll. Die Einbindung meines DesignPatterns wird über uses im interface-Abschnitt der zu Installierendes Komponente geregelt. Bei ALLEN Komponenten. Wenn ich nun Package 1 erstelle, kein Problem. Lediglich alle weiteren Packages verlangen aus Kompatibilitätsgründen die Einbindung des 1. Packages in das eigene Package. Für mich unverständlich. Ist das ein Delphi-Bug, oder warum ist das so? Seit einer Woche versuche ich nun schon eine Lösung zu finden. Ich habe allen möglichen Mist ausprobiert. Es gibt aber keinen nachvollziehbaren Grund, warum dieses eine Package (und auch immer nur dieses) in alle anderen Packages eingebunden werden soll. Wenn ich dieses Problem nicht gelöst bekomme, dann steht doch ein grundlegendes Konzept von Delphi Kopf! |
Re: Installation Komp.Package - Kreuzverlinkungen
Ich glaube du musst in der einen Unit DkComponentDesignPattern noch :
Delphi-Quellcode:
Dann erst das Packet mit der Unit DkComponentDesignPattern installieren und dann
initialization
RegisterClass(TDkComponentDesignPattern); das andere oder beide Units in ein Packet. Wenns nicht geht versuch mal dass eine Packet in das andere einzubinden. Soviel ich weiß muss mann das machen, weil ja in diesem Packet die Class trin ist; |
Re: Installation Komp.Package - Kreuzverlinkungen
Das requires ist nötig, da gemeinsame Units von zwei Modulen nur einmal vorhanden sein dürfen. Classes ist im Package Rtl.
|
Re: Installation Komp.Package - Kreuzverlinkungen
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Vorschlag...
Gruss Thorsten |
Re: Installation Komp.Package - Kreuzverlinkungen
Spätes Danke für Eure Tips. Ich war 4 Monate unabsichtlich offline. Ich schau es mir demnächst an und poste, was aus Euren Vorschlägen entstanden ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz