Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Implementierung einer Interface Prozedur

  Alt 3. Okt 2014, 13:49
Aufwand? Du meinst Tippaufwand? ...
Die Lösung mit dem Interface finde ich besser, weil erweiterbar.
Wenn man in Delphi ein Interface implementieren möchte dann muss man von einer kleinen Auswahl von Basisklassen (TInterfacedObject, TComObject, TTypedComObject, TAutoObject, TAutoIntfObject) ableiten.
(Oder man muss die Methoden QueryInterface(), _AddRef() und _Release() selbst implementieren)

Dies ist schon mal eine ganz erhebliche Einschränkung weil man nicht einfach von einer x-beliebigen Klasse ableiten kann und dann zusätzlich das Interface implementiert.

Aber es kommt noch schlimmer!
Es dürfte bekannt sein, dass wenn man in Delphi mit einem Objekt arbeitet und dabei den Objektzeiger als auch den Interfacezeiger benützt man in Teufels Küche kommt.
Entweder ruft man die Methode Free() auf obwohl der Interfacezeiger noch benützt wird.
=> Zugriff über den Interfacezeiger auf ein freigegebene Objekt
oder der Referenzzähler geht auf 0 und das Objekt wird freigegeben obwohl der Objektzeiger noch benützt wird
=> Zugriff über den Objektzeiger auf ein freigegebene Objekt

In C# ist das kein Problem weil die Lebenszeit der Objekte über eine Garbage Collection bestimmt wird.
In Delphi darf man aber nur über den Interfacezeiger oder den Objektzeiger arbeiten, niemals mit beiden gleichzeitig!

Ein Event hat in Delphi weniger Einschränkungen und ist weniger aufwändig.
fork me on Github
  Mit Zitat antworten Zitat