十八、创建 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”按钮。

    关闭命令提示符窗口。