博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码
阅读量:5238 次
发布时间:2019-06-14

本文共 1524 字,大约阅读时间需要 5 分钟。

如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码

1、Delphi编译方式介绍:

   当我们在开发一个常规应用程序时,Delphi可以让我们用两种方式使用VCL,一种是把VCL中的申明单元及实现单元全部以静态编译的方式编译并链接进Exe可执行文件中,这样做的好处就是发布程序时只需要发布独立的可执行文件,当我们使用了的第三方DLL、OCX等时,无需发布*.bpl等文件,但EXE程序文件的体积会较大。

    另外一种是把VCL库以运行时状态(即把VCL库中的申请单元静态编译进EXE可执行文件,而单元的实行方法则通过LoadLiabary/LoadPackage方法在程序运行时动态的载入内存)动态引入的方式,这种方式编译出来的程序容量比较小,但发布程序必须同时发布*.bpl,*.dll等文件。

    Delphi默认情况下都是以第一种方式使用VCL,要设置程序以动态方式使用VCL,XE之前的版本可选择Project|Options|Packages,勾选 Build with runtime packages选项。在XE及之后的版本中则是在Packages|Runtime Packages>>Link with runtime packages处打勾,并在Runtime packages中加入*.dcp。如果要使用BPL包共享变量,则必须使用上面所说的第二种,所以本Demo程序要按第二种方式来设置。

//============================================================================================//

//共享BPL变量的要点:                                                                    
//    要实现公共变量共享,调用者必须采用静态加载的方法加载公共bpl,在调用                  
//    者为BPL工程时直接在Requires中加入bplCommon.dcp公共包,而在调用                      
//    者为EXE时则是在Project|options|build with package的Requirs 加入 dcp,               
//    (在XE及之后的版本中则是在Packages|Runtime Packages>>Link with runtime packages处打勾,
//    并在Runtime packages中加入bplCommon.dcp)                                            
//    否则公共包中的变量无法实现共享                                                        
//BPL包的调试:                                                                            
//   BPL可以调试,在run->parameters下指定主执行Exe程序即可,和正常的独立程序调试没有两样    
//============================================================================================//

Delphi的编译方式还可参考此贴:

停靠技术(窗口融入)可参考博主的另一篇文章:,或者参考此贴:

2、运行时动态引入方法的设置(以XE2为例):

工程文件结构:

Link with runtime package设置:

加入BPL公共包:

Demo运行结果,在Exe中获取BPL公共包中StrVar1和IntVar1全局变量值的情况:

在Exe中调用bplForm.bpl包中ShowBplForm方法并融入RzPageControl中的情况:

在Exe中调用bplForm.bpl包中ShowModalBplForm方法并获取BPL公共包中StrVar1和IntVar1全局变量值的情况:

3、Demo源码下载

转载于:https://www.cnblogs.com/xieyunc/p/9126554.html

你可能感兴趣的文章
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
自己到底要的是什么
查看>>
Kruskal基础最小生成树
查看>>
ubuntu 14.04 安装搜狗拼音输入法
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
Java内部类详解
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>