Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Formulare in BPLs (https://www.delphipraxis.net/160712-formulare-bpls.html)

Angel4585 27. Mai 2011 09:37

Formulare in BPLs
 
Hallo,

ich habe in einer BPL ein Formular für einen Suchdialog.
Jetzt möchte ich in einer zweiten BPL die erste BPL einbinden und den Suchdialog aufrufen.
Beim Compilieren sagt mir die IDE dann, dass die DFM des Suchdialogs nicht gefunden werden kann.

Naja ich hab den Sourceordner der ersten BPL nicht in den Suchpfaden, will ich eigentlich auch nicht, da es rein über die dcu gehen sollte.
Warum wird da zwingend die DFM verlangt und wie kann man das besser machen?

:angel:

himitsu 27. Mai 2011 10:25

AW: Formulare in BPLs
 
In der DCU liegt die DFM nicht drin.

DCU = kompilierter Code der PAS
DFM = Ressource des Formulars.

Es müssen also PAS+DFM oder DCU und DFM immer zusmmenliegen.



Aber eigentlich dachte ich, daß die DFM mit in die BPL gelinkt wird, genauso wie die DCU auch einkompiliert wird. :gruebel:

MarcoWarm 27. Mai 2011 10:30

AW: Formulare in BPLs
 
Hallo

also ich gehe davon aus, daß du die DCP der FormEnthaltende.bpl in der Rubrik "Erfordert" der FormBenoetigende.bpl eingetragen hast.
Wenn du an den Standardeinstellungen des Package Projektes (FormEnthaltende.bpl) nichts geändert hast, steht unter Projektoptionen->Beschreibung->Build-Steuerung sicherlich "Wenn Erforderlich". Das heißt, daß Delphi selbst entscheidet, wann es dieses Package zusammenbaut. Wenn du also das FormBenoetigende.bpl Package kompilierst kann es sein, daß Delphi das FormEnthaltende.bpl implizit vorsorglich selbst nochmal bauen will. Da kann es u.U. vorkommen, daß der Pfad nicht gefunden wird. Wenn du bei der Build-Steuerung "Manuell" auswählst, entscheidest du selbst, wann du welches Package erzeugst. Das spart Zeit im Build Prozess, kann aber wieder diverse andere Compilerfehler triggern (siehe Interner Fehler U2156) (aber wenn man die einmal kennt erschrickt man nicht mehr ;-))
Es gibt sicherlich Einige, die der oben genannten Darstellung widersprechen möchten, wir sind jedoch mit dieser Methode immer sehr gut gekommen. Unser größstes Projekt umfasst ca 60 Programm-Packages (d.h. 3rd Party Komponenten und Delphi Packages kommen da noch dazu) die alle lustig munter auf (oder besser ineinander) zugreifen. Und es funktioniert tadellos.

Viel Spaß mit Packages weiterhin

Gruß
Marco

Angel4585 3. Jun 2011 11:11

AW: Formulare in BPLs
 
Also wenn ich eure Antworten so lese glaube ich das Prinzip mit den Packages nicht verstanden zu haben.


Ein Package ist eine BPL, oder?
In der BPL sollte alles drin sein was zu der BPL gehört.
D.h. wenn ein Formular drin ist, dann sind alle Daten - auch die DFM - in der BPL drin.

Wenn ich also ein Package als Entwurfszeitpacke in der IDE installiere sollte man doch eigentlich auf alles aus dem Package zugreifen können oder?

Da das nicht so problemlos wie gedacht funktioniert, scheint irgendwo in meiner Logik etwas nicht zu stimmen.
Ich vermute mal es liegt an dem Punkt "In der BPL sollte alles drin sein was zu der BPL gehört".
Wenn ich eine BPL installiere, was passiert dann genau?

Und was genau ist eine DCP? Ich hab hier nur BPLs.

Stevie 3. Jun 2011 11:53

AW: Formulare in BPLs
 
DCP = delphi compiled package. Sozusagen die dcu des Packages und die wird auch beim Kompilieren eines Packages erzeugt. Standardmäßig unter Delphi 2010 in das $(BDSCOMMONDIR)\Dcp Verzeichnis. Diese wird benötigt, um dein Package1 in Package2 zu benutzen. Ansonsten werden alle benötigten Units in Package2 kompiliert. Scheint bei dir der Fall zu sein, denn dass er die dfm nicht findet, deutet auf die Benutzung der dcu hin.

Angel4585 3. Jun 2011 12:19

AW: Formulare in BPLs
 
:gruebel:

Also die werden in die dcp compiliert aber nicht benutzt, stattdessen werden die dcu's genutzt?

Stevie 3. Jun 2011 12:25

AW: Formulare in BPLs
 
Steht Package1 im requires des Package2?


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