Gut, Delphi scheint das Interface die Variable, vor Übergabe an den OUT-Parameter, freizugeben.
Ja, so muss es ja sein, es ist ja schließlich ein out-Parameter, das heißt der Aufruf entspricht einer Neuzuweisung. Also muss das alte Objekt natürlich vorher freigegeben werden.
Was sagt denn ein älteres Delphi zu dem Code?
Delphi 3 sagt:
Code:
create test-interface
TTestIntf.Create 008A3738
call SetVar
SetVar begin
TTestIntf.Create 008A3750
TTestIntf.Destroy 008A3738
SetVar end
set nil
TTestIntf.Destroy 008A3750
create test-interface
TTestIntf.Create 008A3738
call SetOut
TTestIntf.Destroy 008A3738
SetOut begin
TTestIntf.Create 008A3738
SetOut end
set nil
TTestIntf.Destroy 008A3738
create test-interface
TTestIntf.Create 008A3738
call SetVarD
SetVarD begin
TTestIntf.Create 008A3750
TTestIntf.Destroy 008A3738
SetVarD end
set nil
TTestIntf.Destroy 008A3750
create test-interface
TTestIntf.Create 008A3738
call SetOutD
TTestIntf.Destroy 008A3738
SetOutD begin
TTestIntf.Create 008A3738
SetOutD end
set nil
TTestIntf.Destroy 008A3738
create test-interface
TTestIntf.Create 008A3738
call SetOutI
TTestIntf.Destroy 008A3738
SetOutI begin
TTestIntf.Create 008A3738
SetOutI end
set nil
TTestIntf.Destroy 008A3738
Ich würde mal sagen alles ok, oder?