怎样使自己写的DLL有属性?

my0707 2004-05-12 08:34:01
例如我有个DLL,可以这样调用:
<%
set mydll=server.createObject("mydll.myclass")
mydll.write "hello!"
%>

其实在DLL里write是个函数,"hello"是它的一个参数,我想用下面的方式调用DLL:
<%
set mydll=server.createObject("mydll.myclass")
mydll.Str="hello!"
mydll.write
%>
这样,str成了mydll对象的一个属性,write成了mydll对象的一个方法,类似于:
<%
set conn=server.createobject("adodb.connection")
conn.connectionStr="driver={microsoft access driver (*.mdb)};dbq=D:/a.mdb"
conn.open
%>

说了这么多,我要解决的问题其实只有一个:
我写了一个DLL,里面有一个函数,这个函数一共有10个参数,调用的时候必须把这10个参数全部都赋值,如果不赋值,就会出现参数个数不正确的错误提示。我的想法是把参数变成这个DLL的属性,除了必要的几个属性需要赋值外,其他的属性可以为空,那么就取默认的值,这样调用的时候就方便多了。

请问在DLL里,如何实现这样的要求?请写出必要的代码~~~Thanks!
...全文
68 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
my0707 2004-05-12
  • 打赏
  • 举报
回复
没有更好的解决办法了吗?
superauu 2004-05-12
  • 打赏
  • 举报
回复
错了,应该是
上面的dll使用时
<html>

<%
set testcom = createobject("test1.test")
testcom.setStr("okok")
testcom.mywrite
%>

</html>
superauu 2004-05-12
  • 打赏
  • 举报
回复
上面的dll使用时
<html>

<%
set testcom = createobject("test1.test")
testcom.setStr="okok"
testcom.mywrite
%>

</html>
superauu 2004-05-12
  • 打赏
  • 举报
回复
不能直接赋值,但是可以学习java bean的一些办法。
Private objRequest As Request
Private objResponse As Response
Private objServer As Server
Private objSession As Session
Private objApplication As Application
Public str As String

Public Sub onstartpage(sc As ScriptingContext)
Set objRequest = sc.Request
Set objResponse = sc.Response
Set objServer = sc.Server
Set objSession = sc.Session
Set objApplication = sc.Application
End Sub
Public Sub setStr(s As String)
str = s
End Sub

Public Sub myWrite()
objResponse.Write str
End Sub

上述代码需要引用microsoft active server page object liberary
用多个类似
Public Sub setStr(s As String)
str = s
End Sub
的函数给参数赋值。
devinjiang 2004-05-12
  • 打赏
  • 举报
回复
一个简单的例子:

Option Explicit

   注释:用来判断一个年份是否为闰年的函数

   Public Function IsLeapYear(yr As Variant) As Boolean

   注释:如果年份能够被4整除并且不能被100整除,或者能够被400整除

   注释:那么它就是闰年

   If (yr Mod 4 = 0 And yr Mod 100 < > 0) Or yr Mod 400 = 0 Then

   IsLeapYear = True

   Else

   IsLeapYear = False

   End If

   End Function

   上面就是所需要的全部代码了,其实很简单。下面所要做的,就是把它编译成一个dll文件。在“文件”菜单中选择“建立CheckYear.dll...”,再选择要文件要保存的路径。一般的,可以在在服务器上的InetPub目录下面建一个Server Components目录,专门用来存放所有用于ASP中的组件。但这不是必须的,无论你把dll文件保存在什么地方,在编译的过程中,编译程序都会自动的在系统中对组件进行注册


如何用VB6写COM组件(二)
 

   如果你的VB和WEB服务器不是在一台电脑上,那么在把dll文件拷贝到服务器上后,如果要让组件能够被使用,就必须手工对其进行注册。

   首先你需要把.dll文件从你开发它的机器上,发送到你的服务器上。一般在www服务器上可以为所有的为ASP写的组件建立一个目录,把那个.dll文件拷贝到那个目录中。比如在InetPUB下建立一个Server Components目录。在完成拷贝后,就可以运行Regsvr32.exe来注册这个组件了。在“开始”菜单中选这“运行”,然后在“运行”对话框中输入regsvr32 和要注册的组件的名称和其完整路径。例如:

   Regsvr32 "C:InetPubServer ComponentsMyComponent.dll"

   就这么简单,在注册成功之后,你会得到一个成功注册的信息。然后,你就可以在ASP页面中引用这个COM对象了。当然,要完成这些你需要有服务器的访问权限,你可以直接在服务器上注册或者通过诸如pcAnywhere之类的软件实现远程注册。

   然后,我们就可以在ASP中调用这个组件了。建立一个ASP页面,并添入下面的代码:

   < % Option Explicit

   Dim oCheckYear

   Dim IsLeapYear

   Dim Year

   Year = 1900 注释:用来检测组件的年份

   注释:建立一个对刚才那个组件的引用

   Set oCheckYear = CreateObject("CheckYear.LeapYear")

  注释:调用组件中的IsLeapYear函数,并报存结果

   IsLeapYear = oCheckYear.IsLeapYear(Year)

   注释:清除对组件的引用,好的编程习惯

   Set oCheckYear = Nothing

   % >

   < HTML >

   < HEAD >

   < TITLE >例子< /TITLE >

   < /HEAD >

   < BODY >

   < %

   注释:打印输出

   If IsLeapYear = True Then

   Response.Write "< P >< b >" & Year & "< /b >是闰年< /P >"

   Else

   Response.Write "< P >< b >" & Year & "< /b >不是是闰年< /P >"

   End If

   % >

   < /BODY >

   < /HTML >
芝城游侠 2004-05-12
  • 打赏
  • 举报
回复
多分成几个function就可以
tianjy 2004-05-12
  • 打赏
  • 举报
回复
public a as string
……
public j as string

public function write() as string
a=trim(a)
if a="" then a="默认值"
……
write="你要输出的结果
end function
my0707 2004-05-12
  • 打赏
  • 举报
回复
快来人啊!
发帖
ASP

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
帖子事件
创建了帖子
2004-05-12 08:34
社区公告
暂无公告