In dem gezeigten Code ist es so, daß hier nicht beide Referenzen "gleichzeitig" verwendet werden.
(oftmals macht man sowas, wenn auf eine Funktion des Objekts zugreifen will, welche man "vergessen" hat ins Interface aufzunehmen)
Objekt vor Interface funktioniert oftmals noch.
Example := TContainer.Create(...);
=> Selbst wenn hier Example ein IContainer wäre, würde es kurz vor der Zuweisung noch als Objekt behandelt.
Es kommt jetzt allerdings noch drauf an, was
FindBlaType(...)
und
SetIrgendwas
macht und ob darin eine Interfacereferenz dieses Objekts erzeugt/verwendet wird, denn dann hat man mit diesem Vorgehen ein Problem, da man dann Interface- und Objektreferenz gleichzeitig verwendet.
Objekt nach Interface ist standardmäig nicht möglich, da man hierfür, bei Freigabe der letzen Interfacereferenz, die Freigabeautomatik des Interfaces deaktivieren müßte.
Bzw. man muß an den Stellen, wo man es in als Objekt benötigt, sicherstellen, daß über diese Dauer immer mindestens eine Interfacereferenz existiert.
Außerdem gibt es hier ein Speicherleck, wenn das IF ein False liefert, bzw. wenn es eine
Exception gibt ... also wenn der Programmablauf nicht beim
Result :=
vorbei kommt, da sich dann niemand dafür verantwortlich hält, dieses Objekt wieder freizugeben.