![]() |
Runtime Packages
Moin,
Ich hatte kürzlich eine Unterhaltung mit einem Delphi Programmierer (der übrigens hier auch User ist, aber da ich nicht weiß, ob ich ihn nenne darf, möge er das selbst tun wenn er den Thread hier liest). Ich hatte in letzter Zeit sehr viel mit Komponentenprogrammierung zu tun (richtige Component-Packs, inklusive IDE-Editoren, etc.). Irgendwann stellt ich mir dann die Frage wieso Design und Runtime Packages getrennt werden und ich fand auch zu der Antwort: Designtime Packages sind nur für die IDE bestimmt, könnten theoretisch zwar auch gleich für das Programm verwendet werden, aber oft verbietet das die Lizenz der verwendeten Units. Runtime Packages hingegen sind ... ja wofür sind die eigentlich? Das war die Kernfrage in unserer Unterhaltung. Denn in den Jahren (und das sind schon ein paar) in denen ich Delphi aktiv nutze, war ich daran gewöhnt immer die Komponente auf die Form zu setzen und dann deren Pfad zum "Suchpfad" hinzuzufügen. Scheinbar, so das Ergebnis des Chats, ist dies aber gar nicht nötig, denn die Runtime Packages fungieren selbst als Wurzeln der Komponenten und werden direkt in eine Exe gelinkt (in diesem Fall haben die Dinger einen Sinn und ich verstehe auch wozu sie gut sind). Stellt sich aber die Frage, wieso er dann bei mir (alle meine Packages, ob meine oder die von Fremdkomponenten sind im Standard-Path; Sowohl Designtime, als auch Runtime Packs) trotzdem, sobald die Komponente auf der Form liegt, entweder die *.dcu oder *.pas Dateien verlangt. Denn dann wären die Runtimes ja widersinnig. Also bleiben nur wenige Möglichkeiten: Ich habe etwas falsch verstanden. Ich habe Recht, aber dann sind Runtimes grundsätzlich sinnlos, was ich mir nicht vorstellen kann. Hier läuft etwas gewaltig falsch und das schon seit Jahren. Ich hoffe ernsthaft es ist die letzte Möglichkeit, denn das Konzept würde vieles erleichtern (und tut das wahrscheinlich schon täglich bei jedem außer mir :? ), sollte sich eine Lösung für das Problem finden. Danke schonmal & Grüße, Max |
Re: Runtime Packages
design pack werden nur von der ide genutzt und enthalten z.b. besondere editoren für die komponente(n).
runtime pack nutzt du, wenn du nicht alles in deine exe kompilieren willst. z.b. wenn du 10 exen auslieferst. diese würden dann 10 mal die komponente enthalten was unsinnig wäre. in den falle kannst du gegen das runtimepack linken. ergebnis eine runtime datei und die 10 exen welche alle etwas kleiner sind. |
Re: Runtime Packages
Zitat:
Aber es stellt sich in diesem Fall die Frage, wieso es Runtimes bei Komponenten gibt. Ich wäre euch sehr dankbar wenn man mir die obige Aussage bezüglich der *.dcu/*.pas Dateien bestätigen oder den Wind aus den Segeln nehmen könnte. Grüße, Max |
Re: Runtime Packages
Zitat:
Zitat:
Zitat:
|
Re: Runtime Packages
Zitat:
Dein letzter Satz ist genau das was ich wissen will. Denn die BPLs dürften ja (im Standardpath, wo sie liegen) sichtbar für die IDE sein (müssen sie sogar, denn die Designtime Packages sind ebenfalls dort und ich kann sie in der IDE verwenden). Also: Gibt es irgendeine Möglichkeit ein Programm mit einer Komponente zu kompilieren, ohne den Suchpfad um den Pfad der zugehörigen *.dcu/*.pas Dateien erweitern zu müssen (also nur per Package?) Danke & Grüße, Max |
Re: Runtime Packages
Zitat:
|
Re: Runtime Packages
Hoppsa, da hatte ich wohl etwas verwechselt.
Also ist dann die statische Bindung das was ich suche? Sprich, die Möglichkeit Komponenten ohne DCU/Pas zu kompilieren? Wenn ja, wie mache ich dann der IDE klar, das ich genau das will? ;) Grüße, Max |
Re: Runtime Packages
Zitat:
![]() Du brauchst die *.bpl und die *.dcp Dateien. Für die statische Bindung zieht sich Delphi die DCU-Dateien aud der DCP-Datei raus. |
Re: Runtime Packages
Zum Thema Design- und Runtimepackages.
Du hast ja Code, der nur zur Designtime benötigt wird. Ein Beispiel sind Editoren im Objektinspektor. Dieser Code wird nicht zur Laufzeit benötigt und kommt damit ins Designtimepackage. Was zur Laufzeit benötigt wird, ist der eigentliche Code, damit die Komponente ihren Dienst verrichtet, den sie in deinem Programm auch verrichten muss. Und dieser Code kommt dann ins Runtimepackage. Es wird also überflüssiger Code aus der Exe ferngehalten Gruß alias5000 |
Re: Runtime Packages
Was man dazu noch erwähnen sollte: Ab Delphi 7 afaik liefert Borland nicht mehr die .PAS der DesignIntf mit und dadurch zwingt CodeGear einen PropertyEditor-Programmierer dazu, Designtime- und Runtimepackages anzulegen. Für ein gemischtes Package (Design & Runtime) würde er die DesignIntf.pas benötigen, genauso wie bei einem Runtime Package.
Nur im Designtimepackage kann man das Dsgntime.dcp als required mit aufnehmen, welche dann die DesignIntf.pas benötigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz