引言: 摘要:本文阐述了Windows环境下动态链接库的概念和特点,对静态调用和动态调用两种调用方式作出了比较,并给出了Delphi中应用动态链接库的实例。
摘要:delphi以其独特的面向控件的开发方式、强大的数据库功能、快速的编译技术以及简单易学的编程特性,使得它自发布之日起即格外引人注目,许多程序员也因此将它作为首选的开发工具。然而,delphi在科学计算、低端编程等方面的功能不如vc++。vc++功能强大、齐全,但是整个系统比较复杂、庞大,尤其对于初学者来说比较难学,其用户界面的开发远不如delphi那样方便、快捷。那么,我们能否将两者的优点结合起来......
摘要: 所谓动态选单是指选单项随着程序的操作变化而变化。现在,我们用delphi来实现这一功能,具体步骤如下:
1.首先,确定动态选单的数据来源,即要确定动态选单标题是来自windows的系统注册表,还是来自一个数据库,或者是来自一个子目录,主要由程序的功能而定。这里假设主窗口名为mainform,上面已有主选单,其动态选单的数据源是一个string类型的变量,名称为submenuitemso......
Delphi中动态链接库两种调用方式的比较上一页 ...
1. load-time dynamic linking
【程序编程相关:
读取IE收藏夹内网址的信息】 【推荐阅读:
自制THyperLink组件】
这种用法的前提是在编译之前已经明确知道要调用dll中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含dll函数的代码;当程序执行时,利用链接信息加载dll函数代码并在内存中将其链接入调用程序的执行空间中,其主要目的是便于代码共享. 【扩展信息:
如何使dbgrid中不同的值显示不同颜色】
2. run-time dynamic linking
这种方式是指在编译之前并不知道将会调用哪些dll函数,完全是在运行过程中根据需要决定应调用哪个函数,并用loadlibrary与getprocaddress动态获得dll函数的入口地址.
四.dll的两种调用方式在delphi中的比较
编写dll的目的是为了输出例程供其他程序调用,因此在dll的工程文件中要把输出的例程用exports关键字引出.在调用dll的应用程序中,需要声明用到的dll中的方法,声明格式要与dll中的声明一样.访问dll中的例程有静态调用与动态调用两种方式.静态调用方式就是在单元的interface部分用external指示字列出要从dll中引入的例程;动态调用方式就是通过调用windows的api包括loadlibrary函数.getprocaddress函数以及freelibrary函数动态的引入dll中的例程.
静态调用方式所需的代码较动态调用方式所需的少,但存在着一些不足,一是如果要加载的dll不存在或者dll中没有要引入的例程,这时候程序就自动终止运行;二是dll一旦加载就一直驻留在应用程序的地址空间,即使dll已不再需要了.动态调用方式就可解决以上问题,它在需要用到dll的时候才通过loadlibrary函数引入,用完后通过freelibrary函数从内存中卸载,而且通过调getprocaddress函数可以指定不同的例程.最重要的是,如果指定的dll出错,至多是api调用失败,不会导致程序终止.以下将通过具体的实例说明说明这调用方式的使用方法.
1. 静态调用方式
示例程序创建了一个dll,其中仅包含一个求两个整数的与的函数,在主程序中输入两个整数,通过调用该dll,即可求出两个整数的与,如图1所示.
图1 dll的静态调用
该dll的程序代码如下:
library addnum;
uses
sysutils,
classes;
{$r *.res}
...
下一页 摘要:一、概述
在银行,税务,邮政等行业的实际工作中,经常涉及到在印刷好具有固定格式的汇款单,储蓄凭证,税票等单据上的确定位置打印输出相关的信息。在此类需求中,精确地定位单据并打印相关信息,是解决问题]的关键。一般情况下,开发者都是通过在打印机上通过重复的测试来达到实际需求。那么,有没有简单有效而又灵活的方法实现上述功能呢?
二、基本思路
分析上述单据的特征,可以发现:此类打印输......