[fpc-pascal] Why casting interface as Tobject will result in a different reference?

Dennis dec12 at avidsoft.com.hk
Fri May 26 11:06:29 CEST 2017


I defined a generic TList<IMyInterface> //CORBA style interface

var
    aInt : IMyInterface;
   aObj : TObject;
begin
    aInt :=  MyList.Items[0];
    aObj := aInt as TObject;

   writeln(  IntToHex(LongWord(aInt),4));

   writeln(  IntToHex(LongWord(aObj),4)); //this will output a different 
Hex value from previous writeln


//This is causing a problem to me because I later

   MyList.Remove(aObj as IMyInterface);//will fail because it is not the 
same as aInt and thus fail to locate the item to remove


Am I missing some fundamental understanding of interface reference?

Dennis




More information about the fpc-pascal mailing list