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.