je le morceau de code suivant:exception de violation d'accès à partir des supports de Delphi -> QueryInterface
for i := 0 to FControlList.Count - 1 do
if Supports(IMyControl(FControlList[i]), IMyControlEx) then
begin
MyControlEx := IMyControl(FControlList[i]) as IMyControlEx;
MyControlEx.DoYourMagic(Self, SomeData);
end;
Ce code est appelé à plusieurs reprises au cours de mon exécution de l'application, mais il échoue dans certains cas spécifiques à l'intérieur des supports() méthode. Et plus précisément - il semble tomber dans l'appel de QueryInterface() dans la méthode Supports().
J'ai vérifié que FControlList n'est pas nul et que FControlList [i] n'est pas nul et que cela arrive toujours.
Toute idée sera appréciée !!!
Pouvez-vous enlever le plâtre à IMyControl dans les supports appel? Qu'est-ce que FControlList, une IInterfaceList? – mjn
Notez également que TControl peut avoir sa propre gestion du cycle de vie, même s'il s'agit de sous-classes de TInterfacedPersistent, il n'utilise pas le comptage de références. Voir http://stackoverflow.com/questions/2182612 – mjn
C'est juste parce que TInterfacedPersistent n'utilise pas le comptage de références. Sinon, TInterfacedObject a été utilisé. –