十八、创建 ActiveX 财务组件

组件将包含一组相关的方法(函数),用来提供脚本语言所不具有的功能。由于           
 VBScript 不提供财务函数,所以您必须通过自己的 Finance 服务器组件来提供          
对 Visual Basic 财务函数的使用能力。该服务器组件能提供所有的 Visual Ba           
sic 财务函数,包括 DDB 函数(双倍余额递减法)、FV 函数(未来值)、IPmt           
 函数(支付利息)、IRR 函数(内部回报率)以及其他函数。不过,在本教程中          
,您将只使用 FV 函数,基于固定利率及等额定期支付方式,返回一笔年金。             
                                                                                 
启动 Visual Basic                                                                
                                                                                 
单击“开始”按钮,指向“程序”,然后指向“Microsoft Visual Basic 5.0”           
                                                                                 
单击子菜单中的“Visual Basic 5.0”,运行编程环境。                               
                                                                                 
开始并命名一个工程                                                               
                                                                                 
在“New Project”对话框中,双击“ActiveX DLL”。                                 
                                                                                 
在“Project”菜单上,单击“Project1 Properties”。                               
                                                                                 
在“General”属性页的“Project Name” 框中,键入“MS”。                         
                                                                                 
选择“Unattended Execution”。                                                   
                                                                                 
注意 选择该选项表明这个工程运行时不需要用户交互,并且将不具有用户交互的          
基础。                                                                           
                                                                                 
                                                                                
                                                                                 
单击“OK”。                                                                     
                                                                                 
现在工程被命名为“MS”。以后,您将从 ASP 脚本中以 MS.Finance 的形式引用          
 Finance 服务器组件。                                                            
                                                                                 
                                                                                 
                                                                                
                                                                                 
按下 F4 键打开类模块的“Properties”窗口,双击“Name”属性并键入“Func           
tion”,然后按 Enter。                                                           
                                                                                 
双击“Instancing”。                                                             
                                                                                 
单击箭头,然后选择“5 - MultiUse”。                                             
                                                                                 
进一步学习 Visual Basic 财务函数                                                 
                                                                                 
Visual Basic 的帮助系统描述了可以使用的财务函数。                                
                                                                                 
                                                                                
                                                                                 
单击“Help”。                                                                   
                                                                                 
选择“Microsoft Visual Basic Help Topics”。                                     
                                                                                 
选择“Index”选项卡,然后键入“financial functions”作为查找的文字。             
                                                                                 
                                                                                 
双击“financial functions”索引条。                                              
                                                                                 
单击“FV Function”,学习该函数。                                                
                                                                                 
学习完财务函数后,关闭“Visual Basic Help”对话框。                              
                                                                                 
将 CalcFV 函数添加到 Finance 类                                                  
                                                                                 
Finance 服务器组件需要一些代码。这些代码让使用您组件的语言可以调用 Vis           
ual Basic 内建的未来值函数。                                                     
                                                                                 
                                                                                
                                                                                 
将下列行复制并粘贴到 Finance 类的代码窗口中:                                    
                                                                                 
                                                                                
                                                                                 
Public Function CalcFV(rate, nper, pmt, Optional pv, Optional whendue)           
                                                                                 
                                                                                 
CalcFV = FV(rate, nper, pmt, pv, whendue)                                        
                                                                                 
End Function                                                                     
                                                                                 
添加组件的入口点                                                                 
                                                                                 
所有服务器组件都需要一个入口(起始)点。这是当对象第一次可用于一种语言           
时,将被调用的代码。在 VBScript 中,当您使用 Server.CreateObject 时,将          
创建对象的一个实例。当执行 Server.CreateObject 语句时,(由 Visual Bas           
ic 创建的)服务器组件上的 Sub Main 过程将被调用。                                
                                                                                 
当您的财务组件被调用时,它不需要任何特殊代码来初始化自身。因此,需要提           
供一个空的(没有 Visual Basic 语句的)Sub Main 过程。                            
                                                                                 
                                                                                
                                                                                 
选择“Project”菜单中的“Add Module”。                                          
                                                                                 
在“Module 1”对话框中,双击模块图标。                                           
                                                                                 
在 Module 1 代码窗口中,键入 Sub Main。                                          
                                                                                 
按下 Enter 键。                                                                  
                                                                                 
将自动进入如下代码:                                                             
                                                                                 
                                                                                
                                                                                 
Sub Main()                                                                       
                                                                                 
End Sub                                                                          
                                                                                 
保存 Finance 工程                                                                
                                                                                 
当保存所作的工作时,将询问您是否保存 Visual Basic 工程的全部 3 部分。其          
中包括工程文件、类模块和代码模块。                                               
                                                                                 
                                                                                
                                                                                 
打开“File”菜单。                                                               
                                                                                 
选择“Save Project”。                                                           
                                                                                 
在“File name”文本框中,键入“Finance”。选择 localhost Web 服务器上的          
如下路径:DriveLetter:\Winnt\System32\Inetsrv\,其中 DriveLetter 是适当          
的驱动器号。(如果您没有接受默认的安装目录,请用您的安装目录替换 \Winn           
t\System32。)                                                                   
                                                                                 
单击“Save”按钮。                                                               
                                                                                 
如果在此以前,另一个用户已经学完了教程的这一部分,将出现一条消息,提示           
文件已经存在。请用您的文件覆盖旧文件。                                           
                                                                                 
                                                                                
                                                                                 
双击“File name”文本框中的值 “Project1”,选中它。                             
                                                                                 
为工程文件键入名称“Finance” (.vbp)。                                           
                                                                                 
单击“Save”按钮保存工程。                                                       
                                                                                 
如果在此以前,另一个用户已经学完了教程的这一部分,将出现一条消信息,提           
示文件已经存在。请用您的文件覆盖旧文件。                                         
                                                                                 
                                                                                
                                                                                 
成为“进程内 (In-Process)”组件                                                  
                                                                                 
Visual Basic 允许您创建进程内 ActiveX 组件(通常称为 OLE 自动服务器)和          
进程外 ActiveX 组件。一个进程内 ActiveX 组件是一个动态链接库(带 .dll            
后缀),由调用它的进程进行加载。一个进程外 ActiveX 组件是一个可执行文件          
(带 .exe 后缀),当它被应用程序调用后,以独立进程的状态运行。由于进程           
内组件与调用它的程序在同一个进程空间,所以性能比进程外组件要佳。                 
                                                                                 
使 Finance 服务器组件成为进程内 ActiveX 组件                                     
                                                                                 
打开“File”菜单。                                                               
                                                                                 
选定“Make Finance.dll”。                                                       
                                                                                 
单击“Options”按钮。                                                            
                                                                                 
选定“Auto Increment”复选框。                                                   
                                                                                 
单击“OK”。                                                                     
                                                                                 
键入 DriveLetter:\localhost\Winnt\System32\Inetsrv\Finance,其中 Drive           
Letter 是适当的驱动器号。(如果您没有接受默认的安装目录,请用您的安装目          
录替换 \Winnt\System32。)                                                       
                                                                                 
如果在此以前,另一个用户已经学完了教程的这一部分,将出现一条消信息,提           
示文件已经存在。请用您的文件覆盖旧文件。                                         
                                                                                 
退出 Visual Basic。                                                              
                                                                                 
注册 Finance 服务器组件                                                          
                                                                                 
所有服务器组件都必须注册。Windows NT 和 Windows 95 用系统注册表来追踪哪          
个服务器组件是可用的。在您的计算机上将 Finance 服务器组件注册后,就可以          
在 VBScript 和所有兼容 OLE 的语言中调用它了。                                    
                                                                                 
打开一个命令提示符窗口。                                                         
                                                                                 
在命令提示符后键入 cd Drive Letter:\localhost\Winnt\System32\Inetsrv,           
其中 DriveLetter 是适当的驱动器号。(如果您没有接受默认的安装目录,请用          
您的安装目录替换 \Winnt\System32。)                                             
                                                                                 
按下 Enter 键。                                                                  
                                                                                 
键入 regsvr32 Finance.dll。                                                      
                                                                                 
按下 Enter 键。                                                                  
                                                                                 
当出现一个对话框显示“DllRegisterServer in finance.dll succeeded”时,           
请单击“OK”按钮。                                                               
                                                                                 
关闭命令提示符窗口。