FMX项目EXE可执行程序资源图片如何部署?

ooolinux 2019-09-29 12:04:38
FMX项目EXE可执行程序资源图片如何部署?
VCL程序可以把图片作为资源编译链接进EXE可执行程序,
FMX项目中,我用如下代码引用图片资源:
System::Ioutils::TPath::GetDocumentsPath()+PathDelim+"aa.jpg",
安卓平台配置把图片资源部署在assets\internal\目录下,生成的apk会自动打包图片资源,
但是Windows平台,同样的代码,只能把图片都拷贝到系统的文档文件夹程序才能调用,
图片和EXE程序是分离的,那如何把可执行程序分享给别人比较方便?
...全文
340 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2019-10-15
  • 打赏
  • 举报
回复
如果是Windows版本,还可以通过“资源与图片(Project菜单)”,示例代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	TResourceStream *rs;
	rs=new TResourceStream((UINT)HInstance,"jpgimg1",RT_RCDATA);
	Image1->Bitmap->LoadFromStream(rs);
    delete rs;
}
ooolinux 2019-10-08
  • 打赏
  • 举报
回复
引用 16 楼 早打大打打核战争 的回复:
我试了一下,安卓下,GetLibraryPath得到的确实是应用安装目录/lib/arm,还没找到在多平台下直接取得安装目录的方法


不同平台条件编译也不麻烦,只有几行代码。
  • 打赏
  • 举报
回复
我试了一下,安卓下,GetLibraryPath得到的确实是应用安装目录/lib/arm,还没找到在多平台下直接取得安装目录的方法
ooolinux 2019-10-03
  • 打赏
  • 举报
回复
我用代码: bmp->LoadFromFile(System::Ioutils::TPath::GetLibraryPath()+PathDelim+u"资源"+PathDelim+"0.bmp"); Windows平台很方便,资源在相对EXE同目录下就可以。 安卓平台,同样的代码,Project——Deployment,添加文件,Remote Path设为 "资源",运行出错,如图: 看来还是用条件编译算了。
  • 打赏
  • 举报
回复
GetLibraryPath取的就是应用安装的那个目录
ooolinux 2019-09-30
  • 打赏
  • 举报
回复
安装目录下读和写不知道要什么权限?
ooolinux 2019-09-30
  • 打赏
  • 举报
回复
引用 12 楼 早打大打打核战争 的回复:
你随便添加,不要使用绝对路径,就是在安装目录下建子目录


就是 ./res 类似这样?
  • 打赏
  • 举报
回复
你随便添加,不要使用绝对路径,就是在安装目录下建子目录
ooolinux 2019-09-30
  • 打赏
  • 举报
回复
引用 10 楼 早打大打打核战争 的回复:
GetLibraryPath取的就是应用安装的那个目录


如果部署的资源文件要能够用GetLibraryPath取得路径,Project——Deployment,添加文件,Remote Path应该设为多少呢?
ooolinux 2019-09-29
  • 打赏
  • 举报
回复
引用 1 楼 早打大打打核战争的回复:
如果你的图片不需要修改,和程序放在一起即可,或者程序下的子目录,用TPath::GetLibraryPath获得程序安装的主目录
那安卓平台和windows平台获取图片的代码就不一样了?
  • 打赏
  • 举报
回复
如果你的图片不需要修改,和程序放在一起即可,或者程序下的子目录,用TPath::GetLibraryPath获得程序安装的主目录

ooolinux 2019-09-29
  • 打赏
  • 举报
回复
引用 7 楼 早打大打打核战争 的回复:
随便加个目录,比如pic\,你的应用带的图片文件的Remote Path都设置到这里


我看Delphi XE6 Android 编程入门教程.pdf 里写:
GetDocumentsPath: /data/data/com.embarcadero.Project1/files
GetLibraryPath: /data/app-lib/com.embarcadero.Project1-2
前者对应assets\internal\目录(Remote Path),后者好像对应不起来?
ooolinux 2019-09-29
  • 打赏
  • 举报
回复
引用 7 楼 早打大打打核战争 的回复:
随便加个目录,比如pic\,你的应用带的图片文件的Remote Path都设置到这里


我看Delphi XE6 Android 编程入门教程.pdf 里写:
GetDocumentsPath: /data/data/com.embarcadero.Project1/files
GetLibraryPath: /data/app-lib/com.embarcadero.Project1-2
这个和assets\internal\目录(Remote Path)的子目录好像对应不起来。
  • 打赏
  • 举报
回复
随便加个目录,比如pic\,你的应用带的图片文件的Remote Path都设置到这里

ooolinux 2019-09-29
  • 打赏
  • 举报
回复
引用 5 楼 早打大打打核战争 的回复:
直接写相对路径就可以了,参考:http://docwiki.embarcadero.com/RADStudio/XE5/en/Deployment_Manager


安卓外部资源文件一般都是部署在assets\internal\目录(Remote Path),代码用:
System::Ioutils::TPath::GetDocumentsPath()+PathDelim+"aa.jpg"

如果你说的用TPath::GetLibraryPath,那么部署的时候Remote Path怎么设置?
  • 打赏
  • 举报
回复
直接写相对路径就可以了,参考:http://docwiki.embarcadero.com/RADStudio/XE5/en/Deployment_Manager

ooolinux 2019-09-29
  • 打赏
  • 举报
回复
引用 3 楼 早打大打打核战争 的回复:
一样的,安卓上也可以


安卓平台,Project——Deployment,添加文件,Remote Path应该设为多少呢?
  • 打赏
  • 举报
回复
一样的,安卓上也可以

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧