AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Implementierung einer Interface Prozedur

Ein Thema von Gutelo · begonnen am 2. Okt 2014 · letzter Beitrag vom 3. Okt 2014
 
Benutzerbild von sx2008
sx2008

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

AW: Implementierung einer Interface Prozedur

  Alt 3. Okt 2014, 12: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
 


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 04:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz