Einzelnen Beitrag anzeigen

hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#21

AW: DLLs in komplexen Programm

  Alt 7. Jan 2011, 20:26
Also, erstmal danke für eure Antworten.
Ich hab mir die versch. Links mal angeschaut und durchgelesen, die beiden Foreneinträge sind mir noch zu speziell.
Das PDF-Dokument gefällt mir ganz gut. Ist halbwegs verständlich erklärt... aber eben nur halbwegs... (Die verwenden so komplizierte Namen und so...)

Also, es gibt eine DLL mit einer Klasse, die versch. Methoden implementiert (zur Verfügung stellt).
Dann gibt es noch ein Interface, welches (fast) alle Methoden dieser Klasse referenziert (also darauf zeigt).
Und schließlich gibt es wieder eine Klasse in der Hauptanwendung (HA), die eine Variable des Typs des Interface besitzt.
Korrigiert mich bitte, wenn was falsch ist!!

Alle drei genannten Sachen sollten in einer eigenen Datei liegen (DLL oder Unit).

In der Klasse der Hauptanwendung erzeuge ich eine Referenz auf das Interface. Falls dies gelingt, kann ich auf die Funktionen des Interface zugreifen.
Wenn ich also eine Prozedur P1 in dem Interface aufrufe, reicht das Interface diesen Aufruf an die Klasse in der DLL weiter, die dann ihre Aufgabe erledigt.
Ist das richtig?

Ich denke mal, meine Beschreibung ist jetzt noch seeeeehr grob...

Ich hab auch noch ein paar Fragen:

-> In dem Dokument ist immer wieder die Rede von "Basisklasse". Was sollte ich mir darunter vorstellen?

-> Auch erwähnt ist TInterfacedObject. Wozu braucht man das? Ich dachte, das übernimmt IUnknown...

-> Wie funktioniert das mit der Referenzverwaltung des Interface? Ich habe verstanden, dass, wenn eine neue Referenz erzeugt wird, der Referenzzähler von IUnknown um eins erhöht wird.
Aber wann wird der Referenzzähler wieder erniedrigt? Es hörte sich so an, als ob man sich darum überhaupt keinen Kopf machen muss...

-> Damit im Zusammenhang die letzte Frage. Der Referenzzähler zählt ja die Referenzen auf ein Objekt. Aber auf welches Objekt? Das Objekt das aus der Klasse in der DLL erzeugt werden kann? Oder die Referenzen auf das Interface?

Würde mich freuen, wenn ihr mir weiterhin so gut helfen würdet! Danke!

LG, hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat