Delphi FireMonkey在应用程序中存储数据

use*_*814 7 delphi firemonkey

我需要在我的Delphi XE5 FireMonkey(Android)移动应用程序中存储一些自定义的静态数据.我在网上看过'RC_DATA'解决方案,但它是特定于Windows的.我需要一个跨平台的解决方案.

这是我发现的RC_DATA解决方案:http://delphidabbler.com/articles?article = 2

代码示例中的注释读取://资源类型 - RT_RCDATA(来自Windows单元)

我从这篇评论中得出结论,Windows单元中的代码是特定于Windows的.如果不是这样,我道歉.

既然Chris说它实际上是跨平台的,我会尝试一下.谢谢克里斯.

关于要求组件或库,我已阅读并重新阅读我的问题,我只是没有看到它.我猜一个'解决方案'可能会包含一个组件或库,但这在我看来并不存在.如果我做错了,我再次道歉.

Chr*_*ton 9

远非你所谓的"RC_DATA"解决方案是特定于Windows的,它实际上是Delphi提供的最直接的跨平台方式.您需要做的是通过Project | Resources and Images ...将文件添加到项目中; 由于其他资源类型特定于Windows的,因此只需坚持使用RCDATA即可.然后,加载,使用TResourceStream就像你在VCL应用程序中所做的那样(RT_RCDATA在声明中System.Types):

procedure LoadStringsFromRes(Strings: TStrings; const ResName: string);
var
  Stream: TResourceStream;
begin
  Stream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
  try
    Strings.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

此外,如果由于某种原因您想在尝试加载之前检查给定资源是否存在,则该System单元会FindResource为非Windows平台实现Windows API 函数.

嵌入式资源的替代方法是使用Project | Deployment将文件添加到应用程序包(OS X和iOS)或APK(Android).虽然这可能被认为是一种更"平台原生"的做事方式,但适当的"远程路径"是特定于平台的......坦率地说,如果一个人如此痴迷于平台原生,他们就无法处理嵌入式资源,那么他们首先不会使用FMX ......


更新:关于现在已经链接的文章,它显示了如何手动写出一个RES文件,这不是一个人通常会做的 - 如果你没有使用IDE的小资源管理器,那么通常的方法是创建一个RC脚本并使用Borland或Microsoft资源编译器进行编译.