Thema: Delphi Verschachtelte Objekte

Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#16

Re: Verschachtelte Objekte

  Alt 15. Sep 2006, 12:57
Ich weis das es nicht das ist, aber das was er möchte ist das was er als Beispiel mit TWebBrowser angeführt hat. Ergo: er fragt aus meiner Sicht nach einem Konzept, nach Möglichkeit auch umsetzbar. Und das was ich oben aufgezeigt habe ist das was heutztage als OOP Konzept am verbreitesten ist.

Es gibt einen Weg exakt das machen zu können was er sich vorstellt, zumindestens sähe es im Source so aus.

Man arbeitet mit Interfaces -> COM Objecten abgeleitet von IDispatch und deren späten Bindung. Das ist Vergleichbar mit den Ole Objekten beim Zugriff auf ein Word-Dokument.

Allerdings: die Implementierung im Source sieht wieder exakt so aus wie normales OOP nur eben dieses mal zusätzlich noch IINteerfaces basieren auf IDispatch.

In der endgültigen Anwendung wird man nun sein TWebBroweser Objekt als Variant speichern. Zb. so

Delphi-Quellcode:
var
  Obj: Variant;
begin
  Obj := CreateMyObject;
  Obj.Starte.Dies.Und.Mache.Das.An.Position(0).OnCLick;
end;
Da unsere Objekt Instance im Variant Obj ein IDispatch ist und wir als Variante darauf zugreifen KANN der Compiler NICHT wissen welche Eigenschaften, Methoden etc.pp unser Objekt in Obj real implementiert. Also greift die späte Bindung und der Compiler legt im compilierten Code einen String als Konstante ab die etwa so aussieht:

"Starte.Dies.Und.Mache.Das.An.Position(0).OnCL ick"

Das bedeutet das du nun in deiner Objekt Implementation durchaus immer neuere Funktionen/Methoden und Hierarchien anlegen kannst und der Endanwender deiner Lib das erst zur Laufzeit quasi als interpretierbaren String aufruft, späte Bindung halt.

Nur, konzeptionell gesehen wird dann denoch der eigene Code gewohnt als OOP programmiert.

Gruß Hagen
  Mit Zitat antworten Zitat