使用 FireMonkey 及其跨平台,我应该在哪里存储我的应用程序数据?

Posted

技术标签:

【中文标题】使用 FireMonkey 及其跨平台,我应该在哪里存储我的应用程序数据?【英文标题】:With FireMonkey and its cross-platforms, where should I store my application data? 【发布时间】:2011-11-18 00:06:49 【问题描述】:

通常,在 Windows 中,我将应用程序的数据保存在用户文件夹 (%appdata%) 中。

为此,我使用链接到 Windows 的函数 ExpandEnvironmentStrings 来获取我需要的文件夹,并将我的 inifile 存储在子文件夹中。

是否有任何最佳实践来管理它并符合所有受支持的平台(Windows 32b、64b 和 Mac)?


我这样测试成功:

procedure TfrmMain.SaveSettings;
var
  fnINI: TFileName;
  ini  : TIniFile;
begin
  fnINI := IncludeTrailingPathDelimiter(GetHomePath) + IncludeTrailingPathDelimiter(APP_NAME) + ChangeFileExt(APP_NAME, '.ini');
  if ForceDirectories(ExtractFilePath(fnINI)) then
  begin
    ini := TIniFile.Create(fnINI);
    try
      ini.WriteString(INI_CONNECTION, INI_IP, edtIP.Text);
    finally
      ini.Free;
    end;
  end;
end;

【问题讨论】:

请将您的发现转移到他们自己的答案中,而不是编辑您的问题。这样人们就可以分别对答案和问题进行投票。 @LachlanG:在这种情况下,我不同意。 Whiler 添加了一个示例,显示了他接受的答案的使用。恕我直言,他不应该为此添加另一个答案,但在更新他的问题以包括他对答案正确的验证方面做了正确的事情。 @lkessler:为什么不在答案中添加评论说他已经验证它有效?他已经发表评论说他会亲自检查。另外,与其将他的解决方案代码添加到他的问题中,不如编辑 Linas 的答案并将代码放在那里。 @LachlanG:如果他没有这个例子,这个评论应该是合适的。但是示例在 cmets 中不能很好地格式化。恕我直言,最好用自己对答案的解释来编辑自己的问题,而不是编辑别人的答案。 @lkessler:这正是我这样做的原因...... 【参考方案1】:

没有尝试过 XE2,但可能你可以使用SysUtils.GetHomePath。还要检查IOUtils,您可以在其中找到用于管理文件、路径和目录的有用记录(TFile、TPath、TDirectory)。它们应该支持不同的平台。

【讨论】:

谢谢,我检查并告诉你。

以上是关于使用 FireMonkey 及其跨平台,我应该在哪里存储我的应用程序数据?的主要内容,如果未能解决你的问题,请参考以下文章

[原创] Firemonkey 解决 Canvas 几何绘图质量问题(移动平台)

在 C++ Firemonkey 平台中克隆对象

C++ Builder使用FMX多平台框架(FireMonkey)移动(安卓iOS)APP开发参考书籍

[FireMonkey]获取设备(平台)类型

Firemonkey里触发home按键被按下的事件

如何在Delphi FireMonkey中发送iOS的推送通知