【发布时间】:2020-06-03 17:13:26
【问题描述】:
我想知道在程序关闭并重新打开后如何保存“变量”的内容。
例如: iCount:=0; inc(iCount)=1;
当我关闭程序并重新打开时,我希望 iCount 包含 1。 谢谢。
【问题讨论】:
标签: delphi delphi-xe2 delphi-2010
我想知道在程序关闭并重新打开后如何保存“变量”的内容。
例如: iCount:=0; inc(iCount)=1;
当我关闭程序并重新打开时,我希望 iCount 包含 1。 谢谢。
【问题讨论】:
标签: delphi delphi-xe2 delphi-2010
有很多方法可以做到这一点。您需要将值保存在某处:文件中、Windows 注册表中、云中……
也许最简单的方法是使用 INI 文件。试试这个:
创建一个新的 VCL 应用程序。
在主窗体中添加一个字段FMyNumber: Integer。
在主窗体中,添加以下方法(并确保在实现部分的uses 列表中包含IniFiles 和IOUtils):
function TForm1.GetSettingsFileName: TFileName;
begin
Result := TPath.GetHomePath + '\Fuzail\TestApp';
ForceDirectories(Result);
Result := Result + '\settings.ini';
end;
procedure TForm1.LoadSettings;
var
Ini: TMemIniFile;
begin
Ini := TMemIniFile.Create(GetSettingsFileName);
try
FMyNumber := Ini.ReadInteger('Settings', 'MyNumber', 0);
finally
Ini.Free;
end;
end;
procedure TForm1.SaveSettings;
var
Ini: TMemIniFile;
begin
Ini := TMemIniFile.Create(GetSettingsFileName);
try
Ini.WriteInteger('Settings', 'MyNumber', FMyNumber);
Ini.UpdateFile;
finally
Ini.Free;
end;
end;
现在请确保在您的应用程序启动和关闭时调用这些:
procedure TForm1.FormCreate(Sender: TObject);
begin
LoadSettings;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SaveSettings;
end;
现在FMyNumber 的值在会话之间保存!
另一种常见的方法可能是使用注册表。试试这个:
创建一个新的 VCL 应用程序。
在主窗体中添加一个字段FMyNumber: Integer。
在主窗体中,添加以下方法(并确保在实现部分的uses 列表中包含Registry):
procedure TForm1.LoadSettings;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Fuzail\TestApp', False) then
try
if Reg.ValueExists('MyNumber') then
FMyNumber := Reg.ReadInteger('MyNumber')
finally
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TForm1.SaveSettings;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Fuzail\TestApp', True) then
try
Reg.WriteInteger('MyNumber', FMyNumber);
finally
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
现在请确保在您的应用程序启动和关闭时调用这些:
procedure TForm1.FormCreate(Sender: TObject);
begin
LoadSettings;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SaveSettings;
end;
FMyNumber 的值再次在会话之间保存!
【讨论】: