zoukankan      html  css  js  c++  java
  • 如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码

    如何在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源码下载

    bplTest_Demo.rar



  • 相关阅读:
    城市的划入划出效果
    文本溢出省略解决笔记css
    长串英文数字强制折行解决办法css
    Poj 2352 Star
    树状数组(Binary Indexed Trees,二分索引树)
    二叉树的层次遍历
    Uva 107 The Cat in the Hat
    Uva 10336 Rank the Languages
    Uva 536 Tree Recovery
    Uva10701 Pre, in and post
  • 原文地址:https://www.cnblogs.com/xieyunc/p/4438261.html
Copyright © 2011-2022 走看看