Hola Marcelo.
No he tenido tiempo de ver a detalle el problema (hoy se me fue la mitad del día buscando una casa de empeños que aceptara relojes Relic).
En su momento, para salir del paso, redefiní el método GetAsVariant en una clase interpuesta:
Código Delphi
[-]
Function TFmtBCDField.GetAsVariant :Variant;
Begin
Result := Inherited GetAsVariant;
If Not VarIsNull (Result) Then
Result := System.Currency (Result);
End;
Eso me basta para el proyecto en cuestión, dado que todos los campos FmtBCD que utilizo son para cantidades monetarias. En otros casos, quizá podría añadirse a ese mismo If una verificación de la propiedad Currency (de tipo Boolean y que solamente tiene impacto en el formato de despliegue).
De todas formas, tengo los fuentes de Delphi 7 y 2007, así que sólo es cosa de encontrar un hueco de tiempo (un hueco sin preocupaciones "primitivas") para echar una mirada en las funciones involucradas y encontrar la diferencia, es decir, esa corrección que evidentemente trae Delphi al menos desde la versión 2007.
¿Los demás han podido adelantarse a ver algo de esto?
Saludos.