Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Projekt mit Runtime-Packages compilieren - BPL nicht gefunden (https://www.delphipraxis.net/182163-projekt-mit-runtime-packages-compilieren-bpl-nicht-gefunden.html)

Stevie 7. Okt 2014 14:03

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Package requires Klausel

Was da drin steht, wird als Package benötigt. Was nicht drin steht und im Package Code benutzt wird, wird implizit ins Package kompiliert (siehe W1033). Oder auch der Popup Dialog der dann kommt und dir sinngemäßg mitteilt "Hör mal, du nutzt hier nen paar Units, die schon in nem anderen Package sind und eine Unit kann nicht in 2 Packages gleichzeitig sein und wenn das andere Package auch in deiner Anwendung ist, knallts. Willste nicht lieber das andere Package in dein requires aufnehmen?"

Hostanwendung

Bei Projekt Optionen->Packages->Runtime packages den Haken setzen und dort alle Packages eintragen, aus der sich die Anwendung (also die exe) bedienen soll. Alles andere, was die Anwendung benutzt und nicht aus diesen Packages bezogen werden kann, wird hineinkompiliert.

Codehunter 7. Okt 2014 14:27

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Ok so langsam wirds klarer. Hostanwendung verstanden. Sieht man ja auch an den Dateigrößen der Host.exe wenn man RTL und VCL einkompiliert oder nicht.

Zu meinem Package: Wenn ich dich richtig verstehe, dann muss ich gemeinsam genutzte Units, die in Host und Package gleichzeitig verwendet werden, in einem externen Package unterbringen. Ok ergibt auch Sinn wenn man sich überlegt was der interface-Abschnitt einer Unit so alles macht.

Was ich noch nicht so ganz durchschaue ist, wie die ganzen implizit eingebundenen Units/Packages zustande kommen. Als Beispiel nenne ich mal UniDAC, das ich zwar in der IDE installiert habe, aber in einem völlig "nackten" VCL-Projekt mit Sicherheit nicht verwendet würde. Trotzdem will die IDE das erstmal in die EXE verbauen. Und ich muss dass quasi in einer Art Blacklist explizit unterbinden. Wäre es nicht sinnvoller, eine Art Whitelist mit den gewollten Packages anzugeben?

Stevie 7. Okt 2014 14:37

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Codehunter (Beitrag 1275124)
Was ich noch nicht so ganz durchschaue ist, wie die ganzen implizit eingebundenen Units/Packages zustande kommen. Als Beispiel nenne ich mal UniDAC, das ich zwar in der IDE installiert habe, aber in einem völlig "nackten" VCL-Projekt mit Sicherheit nicht verwendet würde. Trotzdem will die IDE das erstmal in die EXE verbauen. Und ich muss dass quasi in einer Art Blacklist explizit unterbinden. Wäre es nicht sinnvoller, eine Art Whitelist mit den gewollten Packages anzugeben?

Machst du doch

Codehunter 7. Okt 2014 14:51

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gibts bei mir nicht in der Form. Andere IDE?

Bei meinem XE4 läuft die Sinnigkeit anders herum: Entweder ich gebe bei den Laufzeit-Packages diejenigen an die ich nicht dabei haben will (und wo ich dann eine .bpl beipacken muss) oder ich lasse die weg, wann werden die Packages direkt in die EXE eingebunden. Am Beispiel von UniDAC: Ich habe bei meiner IDE noch keinen Weg gefunden, eine EXE zu backen, in der kein UniDAC verbaut wäre. Und mir kann doch keiner erzählen dass ein absolut leeres Test-Projekt, das nichts außer dem TForm1 enthält, irgendwo implizit ein Package wie UniDAC einbinden würde.

PS: UniDAC ist nur ein Beispiel und stellvertretend für wirklich jedes Package das meine IDE kennt.

Uwe Raabe 7. Okt 2014 14:59

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Nicht da! Im Unterzweig Laufzeit-Packages kannst du in der (gleichnamigen) Eigenschaft Laufzeit-Packges Plattform- und Konfigurations-spezifisch die gewünschten Runtime-Packages auflisten.

Uwe Raabe 7. Okt 2014 15:05

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Zitat:

Zitat von Codehunter (Beitrag 1275128)
Bei meinem XE4 läuft die Sinnigkeit anders herum: Entweder ich gebe bei den Laufzeit-Packages diejenigen an die ich nicht dabei haben will (und wo ich dann eine .bpl beipacken muss) oder ich lasse die weg, wann werden die Packages direkt in die EXE eingebunden. Am Beispiel von UniDAC: Ich habe bei meiner IDE noch keinen Weg gefunden, eine EXE zu backen, in der kein UniDAC verbaut wäre. Und mir kann doch keiner erzählen dass ein absolut leeres Test-Projekt, das nichts außer dem TForm1 enthält, irgendwo implizit ein Package wie UniDAC einbinden würde.

Ich kann das Problem hier nicht nachvollziehen:

- Neues VCL-Projekt
- Unter Projekt-Optionen, Laufzeit-Packages, Mit Laufzeit-Packages linken auf True setzen
- Compilieren
- Projekt - Infos über ... zeigt rechts die Liste der verwendeten Packages an (rtl210, vcl210)

Codehunter 7. Okt 2014 15:27

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jaaaaaa genau da liegt das Problem das ich nicht verstehe. Hier die Infos zu meinem "Plugin-Package" namens Modul1.Module.bpl. Sobald ich das aber auf der Test-VM dynamisch per LoadPackage lade, wird nach diversen anderen BPLs verlangt (z.B. mal wieder unidac180.bpl)

Und jetzt verrat mir mal einer, warum?

Stevie 7. Okt 2014 16:01

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Zitat:

Zitat von Codehunter (Beitrag 1275134)
Sobald ich das aber auf der Test-VM dynamisch per LoadPackage lade, wird nach diversen anderen BPLs verlangt (z.B. mal wieder unidac180.bpl)

Und jetzt verrat mir mal einer, warum?

Vermutlich ganz einfach, weil du in deiner Modul1.Module.bpl irgendwo Units von Unidac nutzt und irgendwann beim Kompilieren mal bei der von mir in den obigen Beiträgen erwähnten Dialogbox "JA, ich will!" gesagt hast und die IDE die entsprechenden Packages in die requires Klausel deines Packages eingetragen hat.

Dass die Exe diese Packages nicht verlangt, müsste dir ja klar, sein sonst würds schon beim Starten des Programms ne "Modul blabla nich gefunden..." Fehlermeldung geben und es einfach nicht starten. Als Beweis lade die Modul1.Module.bpl ins Depends und er zeigt dir, dass er unidac und Konsorten braucht. Es wird dort auch aufgelistet welche Methoden er dort denn genau aus diesen anderen Modulen importiert hat.

P.S. Moment... du macht nen LoadPackage obwohl du die Anwendung doch schon gegen das Package gelinkt hast? Wieso?

Uwe Raabe 7. Okt 2014 16:14

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Zitat:

Zitat von Stevie (Beitrag 1275142)
P.S. Moment... du macht nen LoadPackage obwohl du die Anwendung doch schon gegen das Package gelinkt hast? Wieso?

Ich hatte das so verstanden, daß es sich bei der BPL um ein PlugIn handelt, das dynamisch geladen wird. Wäre es statisch gebunden, würde ja ebenfalls beim Start der EXE das fehlende UniDAC-Modul angemeckert.

Die IDE gibt merkwürdigerweise beim Compilieren eines Package auch dieses Package höchstselbst in der Liste der verwendeten Packages an.

Stevie 7. Okt 2014 17:13

AW: Projekt mit Runtime-Packages compilieren - BPL nicht gefunden
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1275145)
Die IDE gibt merkwürdigerweise beim Compilieren eines Package auch dieses Package höchstselbst in der Liste der verwendeten Packages an.

Ah, hatte nich richtig geschaut, dachte der Screenshot war von der Exe.
Das macht dann meine obige Diagnose hinfällig. Dann kann ich dir noch anbieten, das Projekt mal hier anzuhängen oder mir zu schicken sofern möglich, damit wir nich noch nen halben Tag rumraten müssen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 Uhr.
Seite 3 von 4     123 4      

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