Bonjour.
Je suis en train de passer de D7 à DXE et lors de la conversion d'un projet, je suis tombé sur un truc étrange.
Le problème est résumé par l'exemple suivant qui affiche 0 sous D7 et 8 sous DXE.
Il semblerait que sous DXE, l'instruction myIntf:=TinterfacedObject.create renvoie un pointeur vers la partie iunknown de l'objet créé alors que sous D7, elle renvoie un pointeur vers l'objet créé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1Click(Sender: TObject); var myIntf:IUnknown; myInt1,myInt2:integer; begin myIntf:=TinterfacedObject.create; myInt1 := integer(pointer(myIntf)); myInt2 := integer(pointer(TObject(myIntf))); showmessage(inttostr(myInt1 - myInt2)); myIntf :=nil; end;
Est ce une modification officielle ou un bug ?
Partager