易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

【首发】让你的易程序和图片资源实现“参变分离”   [复制链接]

    2020-12-02 09:21:37
    2020开源大赛(第五届)
    易语言资源网
    2255 次浏览
    来源链接

前言:

  • 是否有易友出现过下列情况:

    • 源码中放置大量的资源文件,严重拖慢易文件打开速度。
    • 源码出现损坏,而且源码中有大量的资源文件,导致源码极大,修复极度困难,甚至无法修复。
    • 源码附带资源文件多,体积集中于一个核心源码文件中,非常不轻量化。
  • 如果你有本程序的话,那么你就不用担心以上内容了!

正文:

  • 本程序只是一个宏,不会再你的代码中增加任何多余代码,而是将图片/常量等数据和主程序分离,编译时重新打包为一个文件,效果图如下(注:图中的“Macro”指令就是核心库中的指令:“宏”,这是一个编译前命令):
  • 工作原理:
    • 首先“宏”命令在编译时会引用外部的Dll(此处我编写了一个SourcePlugin.dll)
    • 然后,编译器会调用SourcePlugin.dll中的“MacroProcessor”接口,“MacroProcessor”接口将会接收编译器传来的处理数据,告诉SourcePlugin.dll应该引用哪些数据。
    • 接着,SourcePlugin.dll利用易源码解析,读出指定易文件的常量表,并根据源码需要整合到程序中。

优点:

  • 该操作似乎把易程序携带文件变得复杂了起来,但是实际上不然,它有以下好处:
    • 首先,如果你要携带大量的资源文件的话,该方法可以大幅度减小主程序的大小,使得主程序更加轻量化。
    • 其次,本宏支持直接引用外部文件作为资源,极大地方便了编程和文件携带(如果你要备份的话,只需要备份一次资源文件,以后只需要备份主程序代码即可。)
    • 然后,SourcePlugin.dll利用易源码解析,可以直接引用外部易程序中的资源文件,减少了储存空间的浪费(如果你要传云盘的话)
    • 最后,本程序还可以直接应用到易模块中,以后就不用搞得一个模块十多MB的了,只需要一个100多KB的SourcePlugin.dll,主模块,携带资源的易文件即可,更新模块只需更新主模块(只要不修改资源文件)

缺点:

  • SourcePlugin.dll使用了易源码解析,在编译时需要把携带资源的易文件加载到内存,对于大文件可能会导致易程序无法分配到足够的内存导致程序崩溃,所以对于处理较大的资源文件时,最好先保存你的程序。
  • SourcePlugin.dll使用的易源码解析在解析很大的易文件时可能导致降低编译速度,不过,我已经大幅度精简了分析部分的源码,保证基本不影响编译速度。

PS:

  • 使用或参考本程序前,请先将“宏插件_源码.e”编译为“SourcePlugin.dll”放到“e\plugins”文件夹下,本帖不接受什么缺少文件的反馈。


点我下载 (已有 69 次下载)

引用模块


源码文件名 模块文件名
宏插件_源码.e
易文件分析.ec


引用支持库


源码文件名 支持库文件名 支持库标识
宏插件_源码.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325
易文件分析.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325
测试程序.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325
资源表.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:tb 天mao 宝贝上下架时间cha询...     下一篇:使用蓝奏云盘免费更新软件...