diff --git a/wst/trunk/base_service_intf.pas b/wst/trunk/base_service_intf.pas index ed454d83e..e6f04fcf7 100644 --- a/wst/trunk/base_service_intf.pas +++ b/wst/trunk/base_service_intf.pas @@ -1199,8 +1199,15 @@ const function IsStoredPropClass(AClass : TClass;PropInfo : PPropInfo) : TPropStoreType; +{$IFDEF FPC} + {$IFDEF FPC_211} var wst_FormatSettings : TFormatSettings; + {$ENDIF} +{$ELSE} +var + wst_FormatSettings : TFormatSettings; +{$ENDIF} implementation uses imp_utils; @@ -4508,11 +4515,15 @@ end; initialization {$IFDEF FPC} + {$IFDEF FPC_211} wst_FormatSettings := DefaultFormatSettings; + wst_FormatSettings.DecimalSeparator := '.'; + {$ENDIF} {$ELSE} GetLocaleFormatSettings(GetThreadLocale(),wst_FormatSettings); -{$ENDIF} wst_FormatSettings.DecimalSeparator := '.'; +{$ENDIF} + TypeRegistryInstance := TTypeRegistry.Create(); SerializeOptionsRegistryInstance := TSerializeOptionsRegistry.Create(); diff --git a/wst/trunk/base_soap_formatter.pas b/wst/trunk/base_soap_formatter.pas index 3c1cf1b2e..b1fa1b6c6 100644 --- a/wst/trunk/base_soap_formatter.pas +++ b/wst/trunk/base_soap_formatter.pas @@ -746,6 +746,7 @@ function TSOAPBaseFormatter.PutFloat( Var s, frmt : string; prcsn : Integer; +{$IFDEF FPC} {$IFNDEF FPC_211} i : Integer; {$ENDIF}{$ENDIF} begin Case GetTypeData(ATypeInfo)^.FloatType Of ftSingle, @@ -755,10 +756,18 @@ begin ftExtended : prcsn := 15; End; frmt := '#.' + StringOfChar('#',prcsn) + 'E-0'; +{$IFDEF FPC} + {$IFDEF FPC_211} s := FormatFloat(frmt,AData,wst_FormatSettings); -// i := Pos(',',s); - //If ( i > 0 ) Then - //s[i] := '.'; + {$ELSE} + s := FormatFloat(frmt,AData); + i := Pos(',',s); + If ( i > 0 ) Then + s[i] := '.'; + {$ENDIF} +{$ELSE} + s := FormatFloat(frmt,AData,wst_FormatSettings); +{$ENDIF} Result := InternalPutData(AName,ATypeInfo,s); end; @@ -849,7 +858,16 @@ procedure TSOAPBaseFormatter.GetFloat( var AData : Extended ); begin - AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); +{$IFDEF FPC} + {$IFDEF FPC_211} + AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); + {$ELSE} + AData := StrToFloatDef(Trim(GetNodeValue(AName)),0); + {$ENDIF} +{$ELSE} + AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); +{$ENDIF} + //AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); end; procedure TSOAPBaseFormatter.GetStr( @@ -1656,7 +1674,15 @@ begin end; tkFloat : begin +{$IFDEF FPC} + {$IFDEF FPC_211} floatDt := StrToFloatDef(Trim(dataBuffer),0,wst_FormatSettings); + {$ELSE} + floatDt := StrToFloatDef(Trim(dataBuffer),0); + {$ENDIF} +{$ELSE} + floatDt := StrToFloatDef(Trim(dataBuffer),0,wst_FormatSettings); +{$ENDIF} case GetTypeData(ATypeInfo)^.FloatType of ftSingle : Single(AData) := floatDt; ftDouble : Double(AData) := floatDt; diff --git a/wst/trunk/base_xmlrpc_formatter.pas b/wst/trunk/base_xmlrpc_formatter.pas index 3d79959e4..594d15ad8 100644 --- a/wst/trunk/base_xmlrpc_formatter.pas +++ b/wst/trunk/base_xmlrpc_formatter.pas @@ -834,7 +834,16 @@ procedure TXmlRpcBaseFormatter.GetFloat( var AData : Extended ); begin - AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); +{$IFDEF FPC} + {$IFDEF FPC_211} + AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); + {$ELSE} + AData := StrToFloatDef(Trim(GetNodeValue(AName)),0); + {$ENDIF} +{$ELSE} + AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); +{$ENDIF} + //AData := StrToFloatDef(Trim(GetNodeValue(AName)),0,wst_FormatSettings); end; procedure TXmlRpcBaseFormatter.GetStr( @@ -1321,7 +1330,16 @@ begin end; tkFloat : begin +{$IFDEF FPC} + {$IFDEF FPC_211} floatDt := StrToFloatDef(Trim(dataBuffer),0,wst_FormatSettings); + {$ELSE} + floatDt := StrToFloatDef(Trim(dataBuffer),0); + {$ENDIF} +{$ELSE} + floatDt := StrToFloatDef(Trim(dataBuffer),0,wst_FormatSettings); +{$ENDIF} + //floatDt := StrToFloatDef(Trim(dataBuffer),0,wst_FormatSettings); case GetTypeData(ATypeInfo)^.FloatType of ftSingle : Single(AData) := floatDt; ftDouble : Double(AData) := floatDt; diff --git a/wst/trunk/tests/test_suite/wst_test_suite.lpi b/wst/trunk/tests/test_suite/wst_test_suite.lpi index 305289586..f7e58f8ec 100644 --- a/wst/trunk/tests/test_suite/wst_test_suite.lpi +++ b/wst/trunk/tests/test_suite/wst_test_suite.lpi @@ -7,7 +7,7 @@ - + @@ -74,8 +74,8 @@ - - + + @@ -88,8 +88,8 @@ - - + + @@ -190,7 +190,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -319,9 +319,11 @@ - - - + + + + + @@ -443,7 +445,7 @@ - + @@ -465,7 +467,7 @@ - + @@ -473,9 +475,7 @@ - - @@ -504,9 +504,7 @@ - - @@ -521,28 +519,7 @@ - - - - - - - - - - - - - - - - - - - - - - +