分析为何Dvbbs8.1后获取不到Dvbbs.CacheName

下边代码在Dvbbs7.1和8.0中均能正常获取到Dvbbs.CacheName的值为DvCache:

<!--#include file="Dv_ClsMain7.1.asp" -->
<%
Set Dvbbs = New Cls_Forum
Response.Write(Dvbbs.CacheName)
%>

但在Dvbbs8.1和8.2中却运行出错:

引用内容 引用内容
Microsoft VBScript 运行时错误 错误 '800a01a8'

缺少对象: 'Dvbbs'

/Dv_ClsMain8.1.asp,行 2013

查看Dv_ClsMain.asp,发现从8.1开始Cls_Forum类的代码有了些不同:

从8.1开始,将原先Class_Initialize函数中的内容放到了PageInit函数中,并在页面末尾增加了一句:Dvbbs.PageInit()!

也就是说,将原先实例化时自动初始化过程改为了人为初始化,这样类的实例化(Dvbbs的声明)就必须放在包含文件之上,否则Dvbbs.PageInit()一句将出错,上面出错正是由于这个原因,OK,将上边代码顺序做相应修改即可:

<%
Set Dvbbs = New Cls_Forum
%>
<!--#include file="Dv_ClsMain8.2.asp" -->
<%
Response.Write(Dvbbs.CacheName)
%>

为什么要将自动初始化改为人为初始化?有点费解。

QQ上请教了老迷,老迷如是说:

引用内容 引用内容
(2008-06-12 11:32:08)   迷城浪子
容易导致崩溃。
(2008-06-12 13:45:22)   迷城浪子
因为是VBS类,那个自动执行的函数里执行的操作太多。
(2008-06-12 13:45:31)   迷城浪子
很容易导致脚本引擎异常。


上一篇: C#中的Asc和Chr函数
下一篇: 借用DataSet将XML读取到DropDownList
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4268
发表评论
登录后再发表评论!