哪里可以保存一些简单的数据?

时间:2010-12-09 13:27:03

标签: delphi pascal

我想知道保存一些简单不敏感数据的最佳位置在哪里?像一些网址和一些设置。

请告知。

5 个答案:

答案 0 :(得分:5)

如果这是每用户文件,则应将其保存在当前用户的配置文件中。例如,在我的Windows 7系统上,您应该使用

C:\Users\Andreas Rejbrand\AppData\Local\Your Company Name\Your Product Name\Version

,例如

C:\Users\Andreas Rejbrand\AppData\Local\Rejbrand\AlgoSim\2.0

要获取C:\ Users \ Andreas Rejbrand \ AppData \ Local路径,请使用SHGetSpecialFolderPath函数。

答案 1 :(得分:5)

设置,特别是用户特定的设置,可以存储在注册表中。看一下Registry单元和TRegistry对象。

这里有一些演示代码可以帮助您:

var
  r:TRegistry
begin
  r:=TRegistry.Create;
  try
    r.OpenKey('\Software\MyApplication',true);
    r.WriteInteger('Setting1',Setting1);
    r.WriteString('Setting2',Setting2);
  finally
    r.Free;
  end;
end;

答案 2 :(得分:2)

INI文件或JSON文件或XML文件,具体取决于您对本地使用的需求。 DB用于净使用。

答案 3 :(得分:1)

有许多选项,如XML(结构化数据存储),ini文件(简单数据),数据库或平面文件。

我会去XML's saved with ClientDatasets。它们允许搜索,排序,使用数据库控件等许多选项。

答案 4 :(得分:1)

这一切都取决于这些设置的目的!如果你想要XCopy部署,我会建议在exe旁边有一个XML文件。但是,如果您还需要写入此内容,则应在当前用户的配置文件或“所有用户”配置文件中找到合适的位置。注册表(本地机器或当前用户)也是简单设置的好选择 另一个问题是您需要存储的设置类型。如果它是简单的设置,我通常从Altova的XMLSpy开始生成XML模式,定义设置的结构。然后我使用Delphi的XML导入向导从此模式生成代码,并使用生成的代码。它允许我以简单的方式修改结构,并确保至少有一些文档(模式)告诉其他人结构。起初听起来可能很复杂,但是一旦你习惯了,它就完美了!不再需要手动编辑注册表设置或忘记INI文件的结构。并且不再考虑编写代码来读取和写入这些设置,因为Delphi会为您做到这一点!
注册表也是一个很好的设置位置,但不是每个用户都有正确的读取权限,或者写入,注册表可能会使您的应用程序崩溃。此外,注册表还有一些其他限制,如果你需要存储很多设置,它就不合适了!可以存储连接字符串以及某些用户帐户的用户名和加密密码,但如果需要存储40个或更多设置,则注册表变得不合适。
INI文件也是如此,往往限制为最大64千字节。当然,您也可以将这些设置存储在常规文本文件中或仅存储在某个二进制文件中。在过去,我甚至将设置存储在ZIP文件中,因为我需要存储许多与网格相关的设置。因此,每个网格都会将其设置读取并写入某个二进制流,然后将其存储在加密的ZIP文件中。