Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在注册表中保存设置的代码_Delphi_Registry_Application Settings - Fatal编程技术网

Delphi 在注册表中保存设置的代码

Delphi 在注册表中保存设置的代码,delphi,registry,application-settings,Delphi,Registry,Application Settings,我有一个弹出菜单。每次用户登录系统时,弹出菜单都会出现 但对于不希望此弹出窗口出现在屏幕上的用户,我使用了复选框,以便在每次登录时不会出现弹出窗口。 如何在注册表中为选中复选框的用户保存设置,以便 弹出菜单不出现您可以使用TRegistry类从注册表读取/保存值。 请参阅帮助;有一些使用示例 请阅读以下内容: RegNGFS:= TRegistry.Create; try RegNGFS.RootKey := HKEY_CURRENT_USER; if RegNGFS

我有一个弹出菜单。每次用户登录系统时,弹出菜单都会出现 但对于不希望此弹出窗口出现在屏幕上的用户,我使用了复选框,以便在每次登录时不会出现弹出窗口。 如何在注册表中为选中复选框的用户保存设置,以便
弹出菜单不出现

您可以使用TRegistry类从注册表读取/保存值。
请参阅帮助;有一些使用示例

请阅读以下内容:

 RegNGFS:= TRegistry.Create;
   try
     RegNGFS.RootKey := HKEY_CURRENT_USER;
     if RegNGFS.OpenKey('SOFTWARE\NGFS', FALSE) then begin
       MaxSteps:= RegNGFS.ReadInteger('MaxSteps');
       StopIN:= RegNGFS.ReadInteger('StopIN');
     end;
   finally
     RegNGFS.Free;
   end;
对于write,有些人喜欢这样:

   RegNGFS:= TRegistry.Create;
   try
     RegNGFS.RootKey := HKEY_CURRENT_USER;
     if RegNGFS.OpenKey('SOFTWARE\NGFS', TRUE) then begin
       RegNGFS.ReadInteger('MaxSteps', MaxSteps);
       RegNGFS.ReadInteger('StopIN', StopIN);
     end;
   finally
     RegNGFS.Free;
   end;
您可以测试一些方法,如WriteBool、ReadBool、ReadString、WriteString等

关于

只需谷歌“Delphi Registry”,第一次点击就是你想要的。写入注册表是一种非常糟糕的做法(除非你想修改操作系统设置,但即使在这种情况下,也不是一个好主意,除非你知道自己在做什么,基于你的问题,我想你不知道——无意冒犯!!),我讨厌使用OS注册表的应用程序,请考虑使用配置文件(S):INI、XML等。@ DoLin:注册表只是让应用程序向它写入数据,而不是重新创建轮子。如果你不喜欢,没关系。。。当我期望(希望)和应用程序被编译到其他平台(在未来的delphi版本中)时,我希望它能被使用,但当我事先知道某个应用程序只适用于windows时,我很乐意使用它。@Dorin用户设置需要在用户配置文件中的某个地方。这是注册表或用户配置文件下的某个文件。不同的需求会导致不同的选择,但使用HKCU在大多数情况下都是完全有效的选择。@Dorin:在Windows Vista和更高版本上,您的配置文件无论如何都必须转到可写目录,将应用程序及其设置存储在同一目录中是不可能的。如果操作正确,使用注册表也很好。HKEY_LOCAL_MACHINE?又是1995年,有人忘了告诉我?!!说真的,用户设置进入HKEY_CURRENT_user有很多原因,尤其是用户通常没有对HKEY_LOCAL_机器的写入权限。此外,写代码应该是写的,而不是读的。@DavidHeffernan;请注意,这是一个非常简单的示例,可以看到类TRegistry和save/write方法。用户必须使用正确的键来保存值。@Neftali可以,但它在很多方面都被破坏了。如果值不存在,读取将失败。此外,示例代码中没有写操作。它不能编译。是的,我知道你的意思,但是你可能想编辑一下代码。至于HKLM/HKCU,举一个简单的例子来说,选择一个不需要权限且实际上符合OP要求的应用程序是有意义的。@Neftalí:我同意David的观点,你的例子建议使用HKLM注册表根,但这是一个糟糕的做法,除非你的应用程序以提升的权限运行。要做一个更好的例子,只需将你的例子改为使用香港中文大学即可。Y、 这是一个充满热情的自由贸易区,凡尔达是一个有着辉煌历史的地方。埃斯托伊世界语和厄尔尼诺世界语在埃斯帕尼奥尔语中的使用情况,以及埃斯佩罗语在坎多语中的使用情况@Neftalí现在好多了,但它仍然没有写入注册表。再次查看代码-它只包含读取命令!