Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: inifile ReadFloat deutsch/english formatsettings

  Alt 14. Jul 2021, 12:49
Oder du machst es dir einmal als class helper und benutzt dann einfach die folgende Unit in deiner uses . Das ist das schwere Los eines Software-Entwicklers, manchmal muss man doch tatsächlich wenigstens noch ein uses tippen.


Delphi-Quellcode:
unit System.IniFiles.TCustomIniFile.Helper;

interface uses System.IniFiles, System.SysUtils;

type
   /// <summary>
   /// Ersetzt die Methode
   /// <c>WriteFloat</c> und deren <i>Read</i>-Gegenstück da die
   /// RTL-Implementation von <c>TCustomIniFile</c> dummerweise
   /// mit den <b>globalen Formatsettings</b> arbeitet
   /// </summary>
   /// <remarks>
   /// Floats werden mit <c>.</c> als <c>DecimalSeparator</c> geschrieben.
   /// </remarks>
   TCustomIniFileHelper = class helper for TCustomIniFile
      protected class var
         internalFormatSettings: TFormatSettings;
      protected
         class constructor Create();
      public
         procedure WriteFloat(const Section, Name: string; Value: Double);
         function ReadFloat(const Section, Name: string; Default: Double): Double;
   end;


implementation

{ TCustomIniFileHelper }

class constructor TCustomIniFileHelper.Create();
begin
   internalFormatSettings := TFormatSettings.Invariant();
end;

function TCustomIniFileHelper.ReadFloat(
   const Section, Name: string;
   Default: Double
): Double;
var
   FloatStr: string;
begin
   FloatStr := ReadString(Section, Name, '');
   Result := Default;
   if FloatStr <> 'then
   try
      Result := StrToFloat(FloatStr, internalFormatSettings);
   except
      on EConvertError do
         Result := inherited ReadFloat(Section, Name, Default);
   else
      raise;
   end;
end;

procedure TCustomIniFileHelper.WriteFloat(
   const Section, Name: string;
   Value: Double
);
begin
   WriteString(Section, Name, FloatToStr(Value, internalFormatSettings));
end;

end.
  Mit Zitat antworten Zitat