AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Techno-Demo]Von Dll auf VCL-Objekte der Anwendung zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

[Techno-Demo]Von Dll auf VCL-Objekte der Anwendung zugreifen

Ein Thema von chaosben · begonnen am 23. Mär 2006 · letzter Beitrag vom 27. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von chaosben
chaosben
Registriert seit: 27. Apr 2005
Oft gibt es ja Diskussionen darüber, warum man von einer DLL nicht auf die Komponenten des aufrufenden Programms zugreifen kann. Das Ganze wurde hier auch schon erklärt.

Wir haben nun eine Art "Framework" geschrieben um Objekte aus der Hauptanwendung in die DLL (und umgedreht) zu exportieren. Innerhalb der DLL kann man fast alle windigen und nicht-windigen Sachen mit den importierten Objekten machen.
Aber es gibt auch die folgende Einschränkung: Wenn eine Eigenschaft/ein Objekt selbstständig Speicher allociert, kann es sein, das beim Beenden der Anwendung Zugrifssverletzungen entstehen. Die betrifft zum Beispiel die Font-Eigenschaft. Das bedeutet, das man diese Eigenschaften einfach ignorieren soll.
Wichtig ist auch, dass innerhalb der DLL allocierte Strings (auch durch einfache Zuweisung) am Ende (finalization) freigegeben/auf '' gesetzt werden. Aber seht euch einfach die Sourcen der Demo an und probiert ein wenig herum. (Und in der Demo einfach mal auf die Hints schauen. )

Liste der möglichen Fallstricke:
  • DLL und Programm müssen mit exakt den selben Sourcen und dem gleichen Compiler erstellt werden
  • to be continued ...
Angehängte Dateien
Dateityp: pas uobjectexport_142.pas (6,1 KB, 49x aufgerufen)
Dateityp: zip objectexport_demo_128.zip (508,6 KB, 62x aufgerufen)
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
 
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#11
  Alt 27. Mär 2006, 08:55
Ok, ich sehe immer noch nicht ein, das ich andere Leuts Projekte zerlegen (was für mich einen destruktiven Charakter hat) darf und dann noch als freundlicher Member gelte, aber ich werde das akzeptieren.

Das DLL und Programm vom gleichen Compiler stammen müssen, war mir so sonneklar, das ich vergessen habe, es dazu zu schreiben. Sorry, ich trage es sofort nach.

Zitat von Lukie:
Führt eure persöbnliche Diskussion bitte per pN weiter und diskutiert im Forum den Code sachlich weiter.
Ja, Sir.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#12
  Alt 27. Mär 2006, 09:05
Zerlegen bedeutet kritisieren und daran ist nichts unfreundliches. Unfreundlich wäre es, die Fehler nicht zu erwähnen und zukünftige Forenmitghleider ins offene Messer laufen zu lassen. So, das wars es jetzt aber von meiner Seite.
Michael
  Mit Zitat antworten Zitat
hanspeter

 
Delphi XE2 Professional
 
#13
  Alt 27. Mär 2006, 09:11
Zitat:
Hmm.. ich sehe es irgendwie immer noch nicht, warum hier DLLspraktischer als Packages sein könnten. Kannst du das mal etwas genauer erklären?
Dafür gibt es schon genügend Gründe. BPL ist die Potentizierung der Dll Hölle.
Delphi prüft Abhängigkeiten bei der Compilierung automatisch.
Hat man dann nicht die Übersicht, welche BPL mit neu compiliert wird, dann kann es passieren, dass
beim Anwender das ganze Programm nicht läuft.
BPL funktionieert nur wenn alle Programmteile mit Delphi compiliert werden. Also genau die gleiche
Forderung wie in dem vorgestellten Framework.
Wir stellen unsere größte Application jetzt z.B. auf Dll um.
Framwork in Delphi, Geschäftslogik in Delphi aber in einer Dll.
Das hat den Hintergrund, das bei der unsicheren Zukunft von Delphi ein schrittweiser Umstieg auf ein
anderes Framwork einfacher wird.
Wir planen den Übergang zu C# und Chrome unter VS.
Allerdings übergeben wir keine Objekte sondern haben eine Aufruf procedure in der DLL.

Gruß Peter
  Mit Zitat antworten Zitat
Elvis

 
Delphi 2010 Professional
 
#14
  Alt 27. Mär 2006, 09:14
Zitat von hanspeter:
Allerdings übergeben wir keine Objekte sondern haben eine Aufruf procedure in der DLL.
Und schon sind wir wieder bei sprachunabhängigen Calls angekommen, für die DLLs nunmalda sind.

Edit: Verquottelt...
Robert Giesecke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 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