AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Komponente kann nicht registriert werden, da von anderem Package registiert?!?
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente kann nicht registriert werden, da von anderem Package registiert?!?

Ein Thema von scrat1979 · begonnen am 5. Nov 2017 · letzter Beitrag vom 6. Nov 2017
Antwort Antwort
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#1

Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 5. Nov 2017, 09:14
Liebe Delphi-Freund,

gestern Abend habe ich meine Delphi-IDE heruntergefahren. Als ich heute mein Programm weiterschreiben wollte, bekam ich folgenden Fehler beim Start der IDE:

Zitat:
Komponente TipcAES kann von Package dclipworksencrypt16.bpl nicht registriert werden, weil sie bereits von Package tcpcalcomponents.bpl registriert wurde.
Soll dieses Package beim Laden des nächsten Projekts geladen werden?
In dem Package tcpcalcomponents.bpl befinden sich 2 von mir entwickelte TCP-Komponenten, RegisterComponents umfasst auch lediglich diese zwei Komponenten. WEnn ich in der IDE nun mein Package installiere, dann werden - urplötzlich - auch zwei weitere Komponenten (u.a. die in der Fehlermeldung erwähnte Komponente) registiert. Daher erscheint auch der Fehler beim IDE-Start. Ich habe definitiv NICHTS verändert, der Fehler kam aus heiterem Himmel.

Irgendjemand eine Idee? Bis gestern Abend hat es tage- bzw. wochenlang funktioniert. Ich habe gestern KEIEN neuen Komponenten installiert!

Meine unit mit RegisterClasses sieht folgendermaßen aus:

Delphi-Quellcode:
unit uCalRegisterClasses;

interface

uses uCalTCPClient,
     uCalTCPServer,
     Classes;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Michael Kuebler', [TCalTCPClient, TCalTCPServer]);
end;

end.
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 5. Nov 2017, 13:25
Der eigentlich Grund und die Lösung steht doch in der Meldung.

Dein Package besitzt wihl eine Abhängigkeit zu einer der beiden genannten Packages.
Wird dein Package geladen, dann lädt es auch das andere Package (was nicht installiert ist und somit beim Start auch nicht geladen wird).

Also dein RegisterComponents ist ersmal an nicht Schuld, sondern dein ganzes Package.


Du mußt nur rausfinden, warum die beiden genannten Packages versuchen eine gleichnamige Komponente zu registrieren.

Ist es sogar die selbe Komponente, dann warum tun Beide das und nicht nur Einer.
* Entweder eines der beiden Packages deinstallieren (bzw. die Abhängigkeiten deines Packages prüfen/anpassen)
* oder die Registrierung von TipcAES aus einem der beiden Packages entfernen. (wenn es die "selbe" Komponente ist)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Nov 2017 um 14:03 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 5. Nov 2017, 14:08
Wenn die in die beiden Packages aufgenommenen Units untereinander voneinander abhängig sind, kann es sein, dass Delphi in ein Package implizit ein anderes mit aufnimmt und dadurch auch die im implizit aufgenommenen Komponenten installiert. Hier kann ggfls. ein Konflikt entstehen.

Schau bitte mal, ob in einem (oder beiden) Package unter requires das jeweils andere Package aufgeführt ist.

Achte bitte beim Installieren der Packages darauf, ob Delphi ggfls. eine Meldung ausgibt, die auf die implizite Aufnahme eines anderen Packages hinweist.

Hier könnten ggfls. Kreuzreferenzen entstanden sein.

Einfachste Lösung:

Alle betroffenen Komponenten in ein Package aufnehmen und das zweite Package verwerfen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 5. Nov 2017, 18:12
Implizit werden keine Packages aufgenommen.
Es kommt vor, dass eventuell ein Package in die Liste der Abhängigkeiten aufgenommen wird, aber das sieht man dann da und kann es wieder entfernen.

Wenn da aber ein Package enthalten ist, was Abhängigkeiten zu dem anderen Package hat, dann lädt es das natürlich, wenn es von deinem Package geladen wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 5. Nov 2017, 18:39
Implizit werden keine Packages aufgenommen.
Seit wann nicht mehr?

Mein Delphi gibt mir regelmäßig eine entsprechende Meldung aus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 6. Nov 2017, 10:24
Mein Delphi gibt mir regelmäßig eine entsprechende Meldung aus
Ich kenne das nur genau andersrum, also dass eine Unit implitzit einkompiliert wurde.
Packages wurden IMHO noch nie automatisch implizit verlinkt.

Es kann ja gewollt sein, dass eine Unit direkt einkompiliert wird, anstatt sie aus einem Package zu laden.

Wir haben das so z.B. im Einsatz.
Eine Komponente ist für die Designtime in einem Package, um in der IDE geladen und auf die Form platziert zu werden, aber zur Laufzeit liegt sie im selben Package, wie die damit bestückten Forms.
So können diese Forms in der IDE bearbeitet werden, auch wenn das Package der Forms grade nicht kompilierbar ist, bzw. beim Kompilieren des zweiten Packages fliegt diese Komponente nicht ständig aus dem Speicher.

Ich kann mich aber an eine Frage erinnern, wo Delphi (oder irgendein Addon) fragte, ob das Package XYZ der Liste der Abhängigkeiten hinzugefügt werden soll, beim Einfügen einer Komponente auf die Form.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Nov 2017 um 11:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#7

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 6. Nov 2017, 11:37
Mein Delphi gibt mir regelmäßig eine entsprechende Meldung aus
Ich kenne das nur genau andersrum, also dass eine Unit implitzit einkompiliert wurde.
Packages wurden IMHO noch nie automatisch verlinkt.
Die IDE gibt eine Meldung, wenn eine Unit aus einem anderen Package referenziert wird, das nicht im required steht, und bietet an, dieses in das required aufzunehmen. Bestätigt man das, erfolgt ein erneutes Compilieren mit dieser Änderung. Verneint man das aber, werden die Fremd-Units dann in das eigene Package aufgenommen und verursachen meistens eine entsprechende Fehlermeldung, sollten beide Packages gleichzeitig in die geladen werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?

  Alt 6. Nov 2017, 13:09
Vielen Dank für die Antworten.

Es ist in der Tat so, dass ich in einem der (Fremd-) units einen entsprechenden Registrierungseintrag gefunden habe. Ich werde dann wohl von den (leider einigen) Komponenten die Register-Prozedur rausnehmen und in eine eigene Unit verlagern müssen. Leider haben die einzelnen Komponenten jeweils in Ihrer eigenen Unit die entsprechende Register-Anweisung. Damit scheint es zu funktionieren.
Was ich allerdings immernoch nicht begreife ist die Tatsache, dass sich die letzten Wochen NICHTS an den Komponenten etc. geändert hat und der Fehler auf einmal (natürlich im ungünstigsten Zeitpunkt...) aufgetreten ist. Aber auf jeden Fall konnte ich es mit Eurer Hilfe lösen Danke dafür.

@Uwe Raab: Das habe ich bereits probiert, aber da jede Komponente ihre eigene Register-Prozedur hat scheint es nicht zu klappen. Ich werde wie gesagt nicht drumherum kommen, die Register-Anweisungen in eine separate Unit zu packen und dann diese in ein entsprechendes Package auszulagern, welches ich dann installieren kann.

Besten Dank nochmals für alles - habt mir wie immer sehr und schnell geholfen!
Michael Kübler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 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