Ein Pointer ist halt kein Interface.
Delphi-Quellcode:
i := IDataObject(ListViewMain.Selected.Data);
// oder
i := Interface(ListViewMain.Selected.Data) as IDataObject;
PS: Wie regelst du denn die Referenzzählung?
Wenn keine andereren Referenzen auf das Interface bestehen und du dieses nicht beachtest, dann würde das Interface freigegeben, auch wenn du dieses hier verlinkt hast, falls du keine Referenz hierfür beantragst.
Delphi-Quellcode:
// zuweisen
ListViewMain.Selected.Data := Pointer(DataObject);
DataObject._AddRef;
// vorm freigeben
DataObject.__Release;