Y ¿para qué quiere hacer un
casting de un record a un TObject, si con un Pointer puede hacer referencia a uno y otro? Yo creo que un TList es más que suficiente para casi todo.
Por otro lado, usar un Variant puede ser útil para tipos simples, pero para tipos estructurados no es posible usarlos directamente, y hay que hacer demasiado moldeo:
Código Delphi
[-]
V := Integer(UnObjeto);
...
TUnbjeto(Integer(V)).UnMetodo();
// Saludos