Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Code Optimisation: Benutzung von const in prozedur-Köpfen

  Alt 9. Jun 2017, 21:45
Das stimmt nicht, denn ein Objekt hat keine Interfacereferenzen.
Deshalb lässt sich das Problem nicht so einfach lösen.
Im ARC hat es das doch.

Wie gesagt, das Problem lässt sich sofort lösen, wenn der Compiler bei Übergabe von irgendwas an einen Const-Parameter eine Variable zwischenschaltet.
Immer wenn es da implizit von TObject zu Interface castet.

Bzw. bei TestFunction(TSomething.Irgendwas.Create) gibt es doch dieses Problem.
Bei TestFunction(Something.GetInterface) geht es, da Delphi aus diesem gemanagten Result einen Var-Parameter macht, welcher über eine generierte lokale Variable läuft.
Und bei TestFunction(Something.GetObject) würde ich jetzt das selbe Problem vermuten, aber hier ist man selber Schuld, da man Objekt- und gezählte Interfacereferenzen niemals vermischen sollte.

procedure TestFunction(const Reference: IInterface);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Jun 2017 um 21:47 Uhr)
  Mit Zitat antworten Zitat