Aunque también se ha de tener ciertos cuidados si resulta ser que el problema estuviera en todas las funciones sobrecargadas que listé antes.
Si uno escribe en la propiedad AsCurrency tiene lugar esto:
Código Delphi
[-]procedure TFMTBCDField.SetAsCurrency(Value: Currency);
var
VMax, VMin: Variant;
FValue: TBcd;
begin
CurrToBcd(Value, FValue, MaxBcdPrecision, MaxBcdScale);
if FCheckRange then
begin
VMax := VarFMTBcdCreate(FMaxValue, Self.Precision, Self.Size);
VMin := VarFMTBcdCreate(FMinValue, Self.Precision, Self.Size);
if (Value < VMin) or (Value > VMax) then
BcdRangeError(Value, VMin, VMax);
end;
SetData(@FValue, False);
end;
Como se ve, si para el el campo se ha definido un rango se va a intentar comparar el valor contra el máximo y mínimo variant TBCD. Si esta versión sobrecargada sufre del mismo problema se nos viene abajo todo.
Al, Ya me hiciste poner en true mi propiedad ModeParanoid.
Saludos,