Creo que a lo que van roman y delphi.com.ar es a la posibilidad que el optimizador haya eliminado la llamada a registerclass en tu ejecutable, o bien que la unidad no esté incluida en el uses de ninguna otra, por lo que la clase no existirá en el proyecto...
Cómo estas seguro que eso no ha ocurrido?
Creo que facilmente podes hacer algo como lo indicado en el código sigiuente para tener un test completo:
Código:
Procedure TForm1.Button1Click(Sender : TObject);
Var
Instancia : TClase;
{si esto compila estoy seguro que la unidad ha sido incluida en el uses }
PunteroClase : TObjectClass;
Begin
Instancia := TClass.Create(Parametros);
Instancia.Free; // para que el optimizador no quite la variable Instancia del camino...
PunteroClase := GetClass('TClass')
Assert(PunteroClase <> nil, '¡Es nil!');
if PunteroClase = nil Then
Begin
// intentamos de nuevo registrar la clase, a ver que ocurre...
RegisterClass(TClass);
Assert(GetClass('TClass') <> nil, '¡Sigue siendo nil, RegisterClass ya no sirve!');
End;
end;
Creo que podria ayudar a entender que ocurre...