浏览代码

* Currency and Comp are correctly handled by GetFloatProp/SetFloatProp, so use these instead of GetOrdProp/SetOrdProp

git-svn-id: trunk@43792 -
svenbarth 5 年之前
父节点
当前提交
40ffb54129
共有 1 个文件被更改,包括 3 次插入29 次删除
  1. 3 29
      packages/rtl-objpas/src/inc/rtti.pp

+ 3 - 29
packages/rtl-objpas/src/inc/rtti.pp

@@ -3991,11 +3991,7 @@ begin
       case GetTypeData(FPropInfo^.PropType)^.FloatType of
       case GetTypeData(FPropInfo^.PropType)^.FloatType of
         ftCurr   :
         ftCurr   :
           begin
           begin
-            {$IfDef FPC_CURRENCY_IS_INT64}
-              Values.Cur := Currency(GetOrdProp(TObject(Instance), FPropInfo)) / 10000;
-            {$Else}
-              Values.Cur := Currency(GetFloatProp(TObject(Instance), FPropInfo));
-            {$EndIf}
+            Values.Cur := Currency(GetFloatProp(TObject(Instance), FPropInfo));
             TValue.Make(@Values.Cur, FPropInfo^.PropType, Result);
             TValue.Make(@Values.Cur, FPropInfo^.PropType, Result);
           end;
           end;
         ftSingle :
         ftSingle :
@@ -4015,11 +4011,7 @@ begin
           end;
           end;
         ftComp   :
         ftComp   :
           begin
           begin
-            {$IfDef FPC_COMP_IS_INT64}
-            Values.Cp := Comp(GetOrdProp(TObject(Instance), FPropInfo));
-            {$Else}
             Values.Cp := Comp(GetFloatProp(TObject(Instance), FPropInfo));
             Values.Cp := Comp(GetFloatProp(TObject(Instance), FPropInfo));
-            {$EndIf}
             TValue.Make(@Values.Cp, FPropInfo^.PropType, Result);
             TValue.Make(@Values.Cp, FPropInfo^.PropType, Result);
           end;
           end;
       end;
       end;
@@ -4035,10 +4027,6 @@ begin
 end;
 end;
 
 
 procedure TRttiProperty.SetValue(Instance: pointer; const AValue: TValue);
 procedure TRttiProperty.SetValue(Instance: pointer; const AValue: TValue);
-{$if defined(FPC_CURRENCY_IS_INT64) or defined(FPC_COMP_IS_INT64)}
-var
-  td: PTypeData;
-{$endif}
 begin
 begin
   case FPropinfo^.PropType^.Kind of
   case FPropinfo^.PropType^.Kind of
     tkSString,
     tkSString,
@@ -4056,22 +4044,8 @@ begin
       SetObjectProp(TObject(Instance), FPropInfo, AValue.AsObject);
       SetObjectProp(TObject(Instance), FPropInfo, AValue.AsObject);
     tkInterface:
     tkInterface:
       SetInterfaceProp(TObject(Instance), FPropInfo, AValue.AsInterface);
       SetInterfaceProp(TObject(Instance), FPropInfo, AValue.AsInterface);
-    tkFloat: begin
-{$if defined(FPC_CURRENCY_IS_INT64) or defined(FPC_COMP_IS_INT64)}
-      td := GetTypeData(FPropInfo^.PropType);
-{$if defined(FPC_CURRENCY_IS_INT64)}
-      if td^.FloatType = ftCurr then
-        SetOrdProp(TObject(Instance), FPropInfo, Trunc(AValue.AsExtended * 10000))
-      else
-{$endif}
-{$if defined(FPC_COMP_IS_INT64)}
-      if td^.FloatType = ftComp then
-        SetOrdProp(TObject(Instance), FPropInfo, Trunc(AValue.AsExtended))
-      else
-{$endif}
-{$endif}
-        SetFloatProp(TObject(Instance), FPropInfo, AValue.AsExtended);
-    end;
+    tkFloat:
+      SetFloatProp(TObject(Instance), FPropInfo, AValue.AsExtended);
     tkDynArray:
     tkDynArray:
       SetDynArrayProp(TObject(Instance), FPropInfo, PPointer(AValue.GetReferenceToRawData)^);
       SetDynArrayProp(TObject(Instance), FPropInfo, PPointer(AValue.GetReferenceToRawData)^);
   else
   else