Frage

Ich arbeite in einem Delphi-IDE-Experten. Um Abhängigkeitsprobleme zu vermeiden, habe ich darüber nachgedacht, diesen Experten als DLL-Experten neu zu erstellen, wie in einem dieser Artikel vorgeschlagen wurde Antworten, jetzt greift mein Experte (kompiliert als BPL) auf das zu Screen Und Application Da es sich um globale Variablen (Instanzen der Delphi-IDE) handelt, habe ich mich gefragt, ob ich, wenn ich meinen Experten als DLL kompiliere, immer noch auf diese Variablen zugreifen kann, und ich möchte es auch wissen which are the main differences between a bpl delphi expert and a dll delphi expert?

War es hilfreich?

Lösung

Soll ich meinen Assistenten als DLL oder Paket kompilieren? Pakete sind einfacher zu laden und zu entladen, ohne die IDE neu zu starten (und daher einfacher zu debuggen), aber sie können Konflikte für Einheiten in der IDE erzeugen.Konflikte treten auf, wenn der Name der Einheit eines Assistenten mit dem Namen einer Einheit in einem anderen geladenen Entwurfszeitpaket übereinstimmt.In diesem Fall können beide Pakete nicht gleichzeitig geladen werden.Die empfohlene Problemumgehung besteht darin, alle Ihre Einheitsnamen mit einem "eindeutigen" Präfix zu präfixen.Gexperts verwendet beispielsweise "gx_" als Namenspräfix für seine Einheiten.

Aus Das Sehr gute Quelle über OTA:GExperts

Andere Tipps

Wenn Sie auf eine globale Variable zugreifen, handelt es sich dabei um globale Variablen, die für Ihre DLL global sind, nicht global für die Haupt-BDS.exe.Ich bin mir nicht sicher, aber ich denke, Ihre DLL hätte eine eigene globale Variable für Bildschirm und Anwendung, wenn Sie Formulare und den Kern der VCL verlinken würden.

Der Zugriff auf die Dinge, die zur IDE selbst gehören, erfolgt über die Open Tools Api (OTA).Ich glaube, dass Sie normalerweise sowieso keine Objekte zwischen der IDE und Ihrem Experten teilen, und wenn Sie das versuchen würden, wäre das problematisch.Alles, was Sie unter Umgehung des OTA tun, ist anfällig für Fehler auf seltsame Weise, insbesondere in zukünftigen Versionen der IDE.

Abhängigkeitsprobleme sind natürlich ein wichtiger Grund, keine BPL-basierten Pakete zu verwenden, aber ich denke, ein noch wichtigerer Grund ist die vollständige Trennung zwischen den Interna Ihres Tools und den Interna der IDE.

Denken Sie daran, dass ein DLL-Ziel ebenso wie ein ausführbares Ziel statisch verknüpft ist.Das ist der Kern des Unterschieds.Wenn Ihr Experte Funktionen bereitstellt, die nur die gesetzlich öffentlich dokumentierten OTA-Schnittstellen nutzen, sollte der Wechsel zu einer DLL problemlos sein.Wenn Sie einige Hintertür-Hacks verwenden, die mit BPLs möglich sind, kann ich Ihnen keine weiteren Ratschläge geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top