Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Interface und Zugriffsverletzung

  Alt 22. Jul 2007, 17:46
Zitat von hoika:
Interfaces unter Delphi sind COM-Interfaces.
Die daranhängendenden Objekte werden "wild" freigegeben,
wenn das Interface seine Gültigkeit verliert.
Das kann ich so nicht stehen lassen:

1, Interfaces unter Delphi sind an COM angelehnt, aber funktionieren wunderprächtig auch Delphi-Intern und auch unter Linux (Kylix)
2, Sie werden (im Gegensatz zu .NET) nicht "wild" freigegeben (die "dahinterliegende" Instanz eines Objekts) sondern sofort wenn es keinen Interfacezeiger mehr darauf gibt (Referenzzählung). Nur wenn man den Tipp von xaromz (Keine Mischverwendung Instanzen und Interfaces) nicht berücksichtigt bekommst man Probleme mit der Delphi-Implementierung von Interfaces).

Zitat von hoika:
Wird das Interface z.B. als lokale Variable definiert,
wird nach Beenden der Methode auch das Objekt freigegeben.
Da muss man dann Rumtricksen mit _AddRef und Release.
Und wieso das? Wenn die Variable/Interface lokal ist dann sollte sie doch freigeben werden nach dem Verlassen. Du hast ja auch keine Variable mehr um darauf zuzugreifen.

Wenn man 2-3 Fallen der Delphi-Implementierung umschifft dann sind Interfaces in Delphi (im Gegensatz z.B. zu C/C++, auch mit Smartpointer) easy zu verwenden und auch sehr Pflegeleicht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat