Convierta OleVariant a Objeto en Delphi

Estoy trabajando en este proyecto donde no tenemos el código fuente para grandes partes del proyecto, pero tenemos los archivos .DLL con cierta información. Hay un error en los archivos DLL. Puedo crear una subclase de la clase con el error y me gustaría rechazar el objeto que ya existe en un punto al que tengo acceso. El problema es que en cualquier momento tengo acceso al objeto, se lanza como una Variante. He intentado lo siguiente (editado para eliminar el contexto):

tempSubclass := Subclass(ParentClass(Integer(oleVariantCast)));

pero me sale el siguiente error:

Could not convert variant of type (Dispatch) into type (Integer)

¿Hay alguna otra forma de sacar el puntero al objeto del OleVariant y / o la conversión de texto involucrada?

Gracias

EDIT: Sí, Parentclass implementa IDispatch. CORRECCIÓN: Parentclass implementa una interfaz que hereda de IDispatch.

Respuestas a la pregunta(2)

Su respuesta a la pregunta