[fpc-pascal] Why casting interface as Tobject will result in a different reference?
Michael Van Canneyt
michael at freepascal.org
Fri May 26 11:08:59 CEST 2017
On Fri, 26 May 2017, Dennis wrote:
> 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?
Why do you think the interface and the object are the same ? They are not.
An interface is just a bunch of method pointers, and an object has instance
data associated with it. Hardly the same thing, I would think ?
Michael.
More information about the fpc-pascal
mailing list