Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Komponenteninstallation XE5 schlägt fehl [gelöst] (https://www.delphipraxis.net/178430-komponenteninstallation-xe5-schlaegt-fehl-%5Bgeloest%5D.html)

Ralf Kaiser 8. Jan 2014 10:53


Komponenteninstallation XE5 schlägt fehl [gelöst]
 
Halli Hallo,

Wir habe da einige selbst entwickelte Komponenten die bisher immer in allen Delphi-Versionen problemlos installiert werden konnten.

Wenn ich diese nun in Delphi XE5 installieren will passiert etwas sehr seltsames (ich kann es mir zumindest nicht erklären):

Neben einer Reihe von anderen Komponenten existiert in diesem Package eine Komponente, nennen wir sie mal TAbgeleitet, die von einer Basisklasse, nennen wir sie mal TBasisklasse, abgeleitet ist. Die TBasisklasse befindet sich in einem anderen Package und ist bereits in der IDE registriert.

Registriert wird diese Komponente (TAbgeleitet) mit diesem Aufruf:

Delphi-Quellcode:

RegisterComponents('Komponenten', [TAbgeleitet]);
Daraufhin erhalte ich dann diese Fehlermeldung beim der Installation in der IDE:

Code:
---------------------------
Fehler
---------------------------
Registrierungsprozedur, dclMyPackage190.Register in Package dclMyPackage190.bpl hat die Exception-Klasse EFilerError: Klasse mit der Bezeichnung TBasisKlasse existiert bereits ausgelöst.
---------------------------
OK  
---------------------------
Kommentiere ich diese Registrierungszeile aus dann wird das Package ohne Probleme in der IDE registriert (es enthält noch eine Reihe anderer Komponenten).

In allen früheren Delphi-Versionen wurde diese Komponente immer anstandslos installiert. In DXE5 nicht.

Hat jemand eine Idee, was die Ursache sein könnte?

Danke schon mal,
Ralf

Uwe Raabe 8. Jan 2014 13:25

AW: Komponenteninstallation XE5 schlägt fehl
 
Kannst du das Problem auf einen einfachen Testfall (zwei Packages, zwei Klassen) reduzieren?

Ralf Kaiser 8. Jan 2014 13:40

AW: Komponenteninstallation XE5 schlägt fehl
 
Das war eigntlich das nächste, was ich versuchen wollte (meistens findet man beim "runterbrechen" dann sowieso den einen oder anderen Hinweis :-)

Das seltsame ist eben, dass das selbe (bis auf den Unterschied "140" und "190" in den Packagenamen)Komponentenpackage auf anderen Delphi-Versionen problemlos installiert wird.

Mal sehen, was da "runterbrechen" ergeben wird...

Ralf Kaiser 8. Jan 2014 14:06

AW: Komponenteninstallation XE5 schlägt fehl
 
Wie ich es mir schon gedacht hatte (oder befürchtet hatte) funktioniert natürlich das auf 2 Packages heruntergebrochene Beispiel ohne Probleme... :evil:

Jetzt muss ich iregndwie versuchen herauszufinden, was an der Klasse die sich nicht installieren lässt so besonderes ist...

Union 8. Jan 2014 14:45

AW: Komponenteninstallation XE5 schlägt fehl
 
Ich hatte bisher einige solche Fälle, die wurden aber beim Öffnen des DPK nach Bestätigung eines entsrpechenden Hinweises durch Ergänzen der requires-Einträge immer automatsch korrigiert.

Ralf Kaiser 8. Jan 2014 15:00

AW: Komponenteninstallation XE5 schlägt fehl
 
Zitat:

Zitat von Union (Beitrag 1242691)
Ich hatte bisher einige solche Fälle, die wurden aber beim Öffnen des DPK nach Bestätigung eines entsrpechenden Hinweises durch Ergänzen der requires-Einträge immer automatsch korrigiert.

Es wäre schön wenn es so einfach wäre!

Die requires-Klauseln sind alle korrekt. Das Projekt wird schließlich seit Jahren von Delphi-Version zu Delphi-Version "weitergereicht". Nur die Versionsangaben sind natürlich angepasst worden.

Außerdem bekäme man bei inkorrekter requires-Klausel schon beim kompilieren Fehler.

Ralf Kaiser 9. Jan 2014 09:35

AW: Komponenteninstallation XE5 schlägt fehl [gelöst]
 
Falls jemand mal ein ähnliches Problem hat:

Mittlerweile hat sich geklärt warum sich diese eine Komponente nicht installieren ließ.

Die Komponente befand sich in einer Unit deren Unitname noch einmal in qualifizierter Form im Projekt enthalten war ("MeineUnit.pas" und "Spezial.Test.MeineUnit.pas").

In dieser zweiten Unit gibt es eine Klasse gleichen Namens. Diese zweite Unit wird nur in ganz bestimmten Fällen von einem ganz anderen Programmteil benutzt. In diesem Fall wird sie qualifiziert (kompletter Namespace) der Usesliste hinzugefügt.

Delphi XE5 war nun so "freundlich" diesen Namespace zu der Liste "Unit-Gültigkeitsbereichsnamen" in den Projektoptionen hinzuzufügen. Als Folge davon wurde in das Projekt die Unit mit dem qualifizierten Namen und nicht die Unit ohne Qualifizierung eingebunden.

Eine Löschung dieses Namesapces und eine gründliche Überprüfung aller Suchpfade (und deren Reihenfolgen) hat das Problem dann gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.

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