Bonjour,
Je mets en place des tests unitaires (avec DUnit si ça a une importance) et j'ai besoin de vérifier que l'un des objets implémente la bonne interface. J'utilise donc la fonction "Supports".
Le problème est que je ne peut pas libérer mon objet sans que ça plante avec le message
Si j'enlève le support cela fonctionne. J'ai également enlevé le CheckTrue histoire d'être certain que rien n'interfère.TestLegacy: EInvalidPointer at $007D9689
Opération de pointeur incorrecte
Ceci fonctionne
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TExportInterfacingTest.TestDirectInterfacing; var ExportObject : TDirectoryImportExport; begin ExportObject := TDirectoryImportExport.Create(dimOutlook,demOutlook); try //CheckTrue(ExportObject.ReturnMessage = ''); finally ExportObject.Free; end; end;
Ceci plante
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TExportInterfacingTest.TestLegacy; var ExportObject : TDirectoryImportExport; ExportInterface : IDirectoryExport; OK : Boolean; begin ExportObject := TDirectoryImportExport.Create(dimOutlook,demOutlook); try OK := Supports(ExportObject,IDirectoryExport,ExportInterface); //CheckTrue(OK = True); finally { Obligé de mettre le Free en commentaire sinon ça plante ! } ExportObject.Free; end; end;
J'ai bien essayé de regarder ce qui se passe dans la fonction "Supports" avec F7 mais je tombe sur de l'assembleur auquel j'avoue ne pas connaître grand chose.
Mon test unitaire passe parfaitement si j'enlève le Free mais je trouve ça très sale.
Partager