interface dans un variant : libération de la référence
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
ITest = interface
['{8BAC43A7-9083-4736-8912-708AF5D684A7}']
function BonAlors: Boolean;
end;
TTest = class(TInterfacedObject, ITest)
function BonAlors: Boolean;
destructor Destroy; override;
end;
{ TTest }
function TTest.BonAlors: Boolean;
begin
result := True;
end;
destructor TTest.Destroy;
begin
Form1.Memo1.Lines.Add('Destr');
inherited;
end; |
ensuite
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
procedure TForm1.Button1Click(Sender: TObject);
var
VarTest: Variant;
IntTest, IntTest2: ITest;
testu: IUnknown;
begin
Memo1.Clear;
IntTest := TTest.Create;
VarTest := IntTest as IUnknown;
IntTest := nil;
VarTest := Unassigned;
Memo1.Lines.Add('fin');
end; |
je voudrait qu'il affiche 'destroy' avant d'afficher 'fin', cependant, VarTest := Unassigned ne semble pas provoquer la libération de la référence. Il faut attendre de sortir de la fonction pour que 'destroy' soit affiché.
Qqn a une explication ?