Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.214 Beiträge
 
Delphi 12 Athens
 
#13

AW: Supports(..) liefert Referenz welche AV auslöst

  Alt 20. Jan 2015, 13:31
Zitat:
Delphi-Quellcode:
function TComponent._Release: Integer;
begin
  if FVCLComObject = nil then
    Result := -1 // -1 indicates no reference counting is taking place
  else
    Result := IVCLComObject(FVCLComObject)._Release;
end;
Nein, TComponent wird niemals über eine Interface-Referenz freigegeben.
TComponent wird vorwiegend innerhalb der VCL verwendet und Diese gibt ausschließlich ihre Instanzen über Free frei,
da es z.B. keine Weak-Referenzen für Objekte gibt, welche bei Freigabe auf nil gesetzt werden.

Es wird maximal das in TComponent gekapselte Interface freigegeben, wenn RefCount auf 0 fällt.
z.B. bei sowas wie TXMLDokument TVCLAutoObject oder TActiveFormControl (spezielles TActiveXControl), wo die eigentliche Funktion in ein Interface weitergeleitet wird. (siehe IVCLComObject)
$2B or not $2B

Geändert von himitsu (20. Jan 2015 um 13:36 Uhr)
  Mit Zitat antworten Zitat