如题,没太多废话,直接复制走即可。
unit uConfig;
interface
uses classes, Sysutils;
type
TConfig = class
private
FFileName: String;
FConfig:TStringList;
protected
public
constructor Create(ConfigFile:String);
destructor Destroy;
property FileName:String read FFileName write FFileName;
function Read(AName:String;Default:String):String;overload;
function Read(AName:String;Default:Integer):Integer;overload;
function Read(AName:String;Default:Single):Single;overload;
procedure Write(AName:String;AValue:String); overload;
procedure Write(AName:String;AValue:Integer); overload;
procedure Write(AName:String;AValue:Single); overload;
published
end;
implementation
{ TConfig }
constructor TConfig.Create(ConfigFile:String);
begin
FConfig:= TStringList.Create;
FFileName:=ConfigFile;
if FileExists(ConfigFile) then
FConfig.LoadFromFile(FFileName,TEncoding.UTF8)
else
FConfig.SaveToFile(FFileName,TEncoding.UTF8);
end;
destructor TConfig.Destroy;
begin
FConfig.Free;
end;
function TConfig.Read(AName, Default: String): String;
var Idx:Integer;
begin
Idx := FConfig.IndexOfName(aName);
if Idx>-1 then
result:= FConfig.ValueFromIndex[Idx]
else
result:=Default;
end;
function TConfig.Read(AName: String; Default: Single): Single;
begin
if not TryStrToFloat(Read(AName,Default.ToString),result) then
result := Default;
end;
function TConfig.Read(AName: String; Default: Integer): Integer;
begin
if not TryStrToInt(Read(AName,Default.ToString),result) then
result := Default;
end;
procedure TConfig.Write(AName, AValue: String);
var Idx:Integer;
begin
Idx := FConfig.IndexOfName(aName);
if Idx>-1 then
FConfig.ValueFromIndex[Idx]:=AValue
else
FConfig.AddPair(AName,aValue);
FConfig.SaveToFile(ExtractFilePath(ParamStr(0))+'Config',TEncoding.UTF8);
end;
procedure TConfig.Write(AName: String; AValue: Integer);
begin
Write(AName,AValue.ToString);
end;
procedure TConfig.Write(AName: String; AValue: Single);
begin
Write(AName,AValue.ToString);
end;
end.
在这里插入代码片
没有测试UTF8效果,理论100%!