Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Installation Komp.Package - Kreuzverlinkungen (https://www.delphipraxis.net/113214-installation-komp-package-kreuzverlinkungen.html)

christian_r 4. Mai 2008 18:57


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:
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.
Eine registrierte Komponente baut sich folgendermaßen auf ...

Delphi-Quellcode:
unit DkTest;

interface

uses
  Classes,
  DkComponentDesignPattern;

type
  TDkTest = class( TDkComponentDesignPattern )
  end;

procedure Register
          (  );

implementation

procedure Register
          (  );
begin
  RegisterComponents( 'Beta', [ TDkTest ] );
end;

end.
Es sollte doch auch funktionieren beide Packages unabhängig voneinander zu erstellen.

christian_r 7. Mai 2008 19:45

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

christian_r 11. Mai 2008 17:34

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!

NickelM 11. Mai 2008 17:51

Re: Installation Komp.Package - Kreuzverlinkungen
 
Ich glaube du musst in der einen Unit DkComponentDesignPattern noch :
Delphi-Quellcode:
initialization
RegisterClass(TDkComponentDesignPattern);
Dann erst das Packet mit der Unit DkComponentDesignPattern installieren und dann
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;

Apollonius 11. Mai 2008 18:23

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.

omata 11. Mai 2008 18:23

Re: Installation Komp.Package - Kreuzverlinkungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Vorschlag...

Gruss
Thorsten

christian_r 23. Dez 2008 00:59

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 05:01 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