用Delphi为Authorware制作自定义函数

2012-12-13 08:34张忠华李红岩任重贵
中国医学教育技术 2012年6期
关键词:对话框数据库函数

张忠华,李红岩,任重贵

哈尔滨医科大学大庆校区,黑龙江 大庆 163319

Authorware是多媒体领域普及度极高的开发平台,具有应用简单、通用性强的特点。笔者在具体的项目开发过程中遇到过将外接设备在Authorware环境中打开并应用的问题。Authorware的功能在这方面比较有限,所以笔者尝试使用外部自定义函数的方式解决问题,最终获得成功。此自定义函数的创建,是通过动态链接库(dynamic link library,DLL)技术实现的。Windows系统中DLL文件的大量存在表明其价值:①充分扩展应用程序的功能;②简化项目管理;③节约内存;④实现资源共享等[1]。笔者认为,基于DLL技术的多媒体平台设计有助于扩展Authorware的系统功能。现将Authorware应用DLL技术的自定义函数的经验与同行分享,希望对大家有所帮助。

1 Authorware对自定义函数的要求

Authorwre可以使用内部与外部两种自定义函数,内部自定义函数就是把某一计算图标内的程序代码或者是存储于外部文本文件的程序代码、甚至是一段字符串程序语句定义为函数形式[2],其实质是将计算图标变为函数样式。实现方法也比较简单,只需将图标中的属性面板的“包含编写的函数”复选框选中即可。而外部自定义函数需要使用其他高级语言制作,通过函数载入的方式来应用。

Authorware使用的外部自定义函数主要以外部扩展U32(UCD)、DLL、Xtras形式封装,而用户制作的自定义函数通常使用DLL的形式,DLL是一个可以被其他应用程序共享的程序模块,封装了一些可以被共享的资源[3]。一个DLL文件中可以包含多个自定义函数,但开发自定义函数时,应注意其他高级语言的数据类型可能与Authorware所要求的数据类型不能一一对应,应根据实际情况来确定自定义的返回值。Authorware只能使用字节、字词、浮点数、双精度数、字串、字符、短型、长型、指针或空值等类型的值,其他类型的函数不能载入,也不可以被应用。

2 用Delphi制作自定义函数

Delphi以其简便易用、语法严谨的特点受广大程序员的喜爱,其自带的工具丰富,大大简化了编程工作量,并且程序经编译后的适应面广,可移植性好。用Delphi开发封装自定义函数的DLL文件可靠易行,可胜任为Authorware开发自定义函数的重任。

2.1 Delphi开发DLL文件的语法要求

Delphi开发DLL文件时,其语法格式上有特殊要求,要按如下语法进行编写:

说明:每个DLL文件中可包含多个函数,每个函数要有一个确定的返回值,Delphi中的数据类型有整型、实型、布尔型、字符型和字符串型等基本类型,还有子界类型、枚举类型、集合类型、数组类型、记录类型、指针类型和文件类型等自定义类型[4]。这些值应与Authorware的要求相对应。在Uses中要包含函数中所用到的各单元名称,如果用到对话框则应包括Dialogs,如果是数据库应用则包括DB和ADODB内容,可在函数体中使用TADOQuery创建对象,才能具体应用。

涉及到对数据库的数据进行各种操作应用,如添加记录、删除记录和各种条件查询,可将与操作数据库相关的部分做成DLLs。当用户对数据操作的需求发生变化时,修改DLLs的相关代码并将该DLLs拷贝到使用者处,这样可及时满足用户需求,不断完善程序功能,便于版本更新[5]。形式参数列表中的参数应标明类型,这些函数或过程本身必须用export编译指令进行编译[6]。

2.2 在Delphi中创建DLL文件

在Delphi中创建DLL,按File→New→Other→DLL Wizard的步骤创建一个DLL Wizard项目。该文包含用于求图片文件的高度与宽度的函数。具体设计过程是这样的,在窗口中输入具体代码如下:

将输入的代码用Project菜单下的Build dlls命令创建DLL文件,如果创建过程中没有相应的错误,则在Authorware中基本上可以正常使用DLL内的自定义函数。Delphi创建DLL文件的环境如图1所示。

图1 Delphi创建DLL文件时工作界面

3 自定义函数在Authorware中的使用

在Authorware中使用高级语言所创建的自定义函数过程如下:首先打开函数面板,在分类选项中选择项目名称XX.a7p,其中XX表示项目名称,如果项目暂未起名,则此项为“未命名.a7p”。选择后,面板下方的“载入…”按钮变为可用状态,单击此按钮,出现加载函数对话框,从中选择具体的DLL文件名,会出现“非Authorware DLL对话框”,要求用户填入具体载入的函数名、参数类型、返回值类型以及对该函数的描述(如图2所示)。填好各项后,单击“载入”按钮,即可将所需函数转入函数面板中(如图3所示)。其后在Authorware中按函数的应用方法正常使用即可。

图2 非Authorware DLL函数载入对话框

图3 函数载入后效果

该例是在一个用于显示数据库图像的实例中使用了DLL自定义函数,其中的运行代码为:

运行效果图如图4所示。

图4 Authorware环境中的运行效果

4 讨论

用Delphi为Authorware制作自定义函数,可以解决很多Authorware所不能解决的问题。如Authorware的数据库应用能力较弱,可通过Delphi开发一些专用函数,则能较好地解决这类问题。其实用其他高级语言也可以制作DLL文件,如用C++制作DLL文件[7],但C++的易用程度与Delphi相比明显要差一些,且应用较复杂。另外,用VB也可以制作DLL文件[8],同样,在VB中也可以使用由其他高级语言创建的DLL[9]。但笔者在用VB为Authorware开发基于DLL文件的自定义函数时,却遇到了在Authorware中无法加载所制作函数的问题,这需要运用到一些其他特别的方法解决,而且比较麻烦。具体操作过程网上已有介绍[10],所以不建议使用VB为Authorware开发封装在DLL文件中的自定义函数。

[1]徐君明,李国林,赵红超,等.基于动态链接库的虚拟仪表建模与仿真[J].航天控制,2010,28(1):70-73

[2]郭新房,倪宝童,王健,等.Authorware 7.0多媒体制作基础教程与案例实践[M].北京:清华大学出版社,2007:139-140

[3]张玉珍,颜廷睿.DLL及其在 Delphi中的应用[J].计算机时代,2005,(1):45-46

[4]徐长梅,任文进.Delphi2005数据库教程[M].武汉:武汉大学出版社,2008:17-22

[5]马丽艳,张春芳,李瑞.用Delphi开发数据库应用功能的DLL程序[J].河北师范大学学报:自然科学版,2007,32(2):173-175

[6]贾维珉.浅析Delphi中动态链接库的使用[J].中国电子商务,2011,(6):63

[7]蔡洪涛,王延红,张巧健,等.Visual C++开发Authorware 7动态链接库函数的方法及应用[J].沈阳师范大学学报:自然科学版,2008,26(3):323-325

[8]王敏.DLL的创建及应用[J].中南民族大学学报:自然科学版,2005,24(1):58-60

[9]毕苏萍,周振红,张成才.Fortran Win32 DLL回调VB窗体[J].计算机工程与设计,2010,31(13):3092-3095

[10]Petrusha R.Creating a Windows DLL with Visual Basic[DB/OL].http://www.windowsdevcenter.com/pub/a/windows/2005/04/26/cre ate_dll.html?page=1,2005-04-26

猜你喜欢
对话框数据库函数
二次函数
第3讲 “函数”复习精讲
二次函数
函数备考精讲
正常恢复虚拟机
Bootlace Worms’Secret etc.
What Is Beauty?
数据库
数据库
浅谈VB的通用对话框《CommonDialog》控件的使用