Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Package kann nicht geladen werden (https://www.delphipraxis.net/149633-package-kann-nicht-geladen-werden.html)

greenmile 25. Mär 2010 15:55


Package kann nicht geladen werden
 
Hallo,

ich bekomme regelmäßig beim installieren neuer Packages in D5 die Meldung "Package X kann nicht geladen werden. Es enthält die Unit Y, die auch in Package '' enthalten ist". X und Y variieren, aber bei Package steht fast immer '' was es natürlich schwer macht, den Fehler zu finden. Kennt jemand dieses Problem und weiß, wie ich es beheben kann? Ich habe schon einiges durch, also zahlreiche Komponenten rausgeworfen/neu installiert, bin "DisabledPackages" durchgegangen und bin trotzdem nicht weitergekommen ...

Paul

Hawkeye219 25. Mär 2010 16:38

Re: Package kann nicht geladen werden
 
Hallo Paul,

eine Unit darf nur in einem einzigen Package enthalten sein. Da Packages normalerweise unterschiedlich schnell weiterentwickelt werden, würde es ohne diese Regel zu einem Konflikt kommen, falls die Packages A und B in einem Projekt verwendet werden und beide die Unit X enthalten. Es ist in diesem Fall nicht klar, welche Version der Unit bei "uses X" im Projekt verwendet werden soll - die aus Package A oder die aus Package B?

Die Lösung sieht in der Regel so aus: entferne die Unit X aus den Packages A und B und packe sie in ein neues Package C. Dieses neue Package nimmst du anschließend in die "requires"-Klausel der Packages A und B auf. Somit gibt es nur noch eine Version der Unit X und der Konflikt ist beseitigt. Problematisch wird es erst, wenn die Units in den besagten Packages nicht identisch sind und es sich nur um eine Namensüberdeckung handelt. In diesem Fall musst du eine der beiden Units umbenennen.

Ich hoffe, diese längliche Erklärung bringt etwas Klarheit in die Sache. Nun musst du nur noch das zweite Package identifizieren, dessen Name die IDE nicht verraten will...

Gruß Hawkeye

greenmile 29. Mär 2010 11:55

Re: Package kann nicht geladen werden
 
Vielen Dank für die ausführliche Antwort. Hast Du noch einen Tipp für mich wie ich rausfinde, welches Package ('') es betrifft? Ich suche mir ja sonst nen Wolf ...

Hawkeye219 29. Mär 2010 16:18

Re: Package kann nicht geladen werden
 
Paul, wenn du über die Quelltexte (*.dpk) der zu ladenden Packages verfügst, brauchst du ja "nur" in diesen nach der doppelten Unit zu suchen. Den Namen der Unit kennst du ja aus der Fehlermeldung.

Für den Fall, dass dir nur die .bpl-Dateien vorliegen, kenne ich leider keine wirklich schnelle Lösung. Wenn du mit der Console umgehen kannst, hilft dir vielleicht das Programm "tdump.exe", das sich im bin-Verzeichnis deiner Delphi-Installation befinden müsste. Mit Hilfe dieses Programms kannst du eine .bpl-Datei analysieren:

Code:
tdump.exe -ee PackageName.bpl > output.txt
In der entstehenden Datei "output.txt" kannst du anschließend nach dem Namen der doppelten Unit suchen. Auf diese Weise gehst du alle Packages durch, die von der IDE geladen werden, bis du (hoffentlich) fündig wirst.

Wenn du etwas Glück hast, findet sich noch jemand, der einen kürzeren Weg kennt.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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