我需要在Delphi XE5 FireMonkey(Android)移动应用程序中存储一些自定义的静态数据。我在网上看过'RC_DATA'解决方案,但它是特定于Windows的。 我需要一个跨平台的解决方案。
以下是我发现的RC_DATA解决方案:http://delphidabbler.com/articles?article=2
代码示例中的注释读取://资源类型 - RT_RCDATA(来自Windows单位)
我从这篇评论中得出结论,Windows单元中的代码是特定于Windows的。如果不是这样,我道歉。
由于克里斯说它实际上是跨平台的,我会尝试一下。谢谢Chris。
关于要求组件或库,我已经阅读并重新阅读了我的问题而我只是看不到它。我猜一个'解决方案'可能会包含一个组件或库,但这在我看来并不存在。如果我做错了,我会再次道歉。
答案 0 :(得分:8)
远非你所谓的“RC_DATA”解决方案是特定于Windows的,它实际上是Delphi提供的最直接的跨平台方式。您需要做的是通过Project | Resources and Images ...将文件添加到项目中;由于其他资源类型 特定于Windows,因此只需坚持使用RCDATA即可。然后,要加载,请使用您在VCL应用程序中执行的TResourceStream
(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;
此外,如果由于某种原因您想在尝试加载之前检查给定资源是否存在,System
单元会为非Windows平台实现Windows API FindResource
功能。
嵌入式资源的替代方法是使用Project | Deployment将文件添加到应用程序包(OS X和iOS)或APK(Android)。虽然这可能被认为是一种更“平台原生”的做事方式,但适当的“远程路径”是特定于平台的......坦率地说,如果一个人如此痴迷于平台原生,他们就无法处理嵌入式资源,那么他们首先不会使用FMX ......
更新:关于现在已经链接的文章,它显示了如何手动写出一个RES文件,这不是一个人通常会做的 - 如果你没有使用IDE的小资源管理器,那么通常的方法是创建一个RC脚本并使用Borland或Microsoft资源编译器进行编译。