![]() |
Komponente kann nicht registriert werden, da von anderem Package registiert?!?
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:
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. |
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
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) |
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
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. |
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
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. |
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
Zitat:
Mein Delphi gibt mir regelmäßig eine entsprechende Meldung aus |
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
Zitat:
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. |
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
Zitat:
|
AW: Komponente kann nicht registriert werden, da von anderem Package registiert?!?
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 :thumb: 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! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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