ASP调用VB组件传递参数时出现错误
在ASP中调用VB编写的组件,总是提示“类型不匹配”错误;后来问题最简归结如下:
VB组件中的测试函数
Sub Test1(str As String)
MsgBox str
End Sub
ASP测试代码
Set obj = createObject(“XXXX”)
str = “aaa”
obj.Test1 // 通过变量传递参数出错,提示类型不匹配
obj.Test1 “aaa” // 直接调用没有问题
set obj = nothing
此外,1)在VB中测试,不会出现错误
2)参数的类型无关,即使是整数也有类似问题
想象中决不可能出现此种问题吧,定是什么地方需要注意一下,但遍寻无解。请问问题出在何处?也许各位短短的一言,就能解我心中大惑;先行谢过!
问题点数:20、回复次数:5Top
1 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2005-01-22 12:15:24 得分 15
Sub Test1(str As Variant)
MsgBox str
End SubTop
2 楼laihongbo524(风铃夜思雨)回复于 2005-01-22 12:33:03 得分 5
public sub testl(byval str as string)
msgbox str 'msgbox 不会在客户端弹出的
end sub
可写成返回字符串
public function testl(byval str as string)as string
testl=str
end function
response.write obj.testl("aaaaaaa")Top
3 楼mapcity(沉郁)回复于 2005-01-22 12:38:30 得分 0
谢谢OnLine!试过了,这样改后可以。
但是,组件中有很多方法函数,难道要把所有的参数都改为这种类型吗?
对VB不熟,总认为 Variant 是个万能类型,可以化身千万;可是我明明对一些类型已经明确;再退回到这种类型,总感不妥。
另外:VB编写的组件,难道都应该用弱类型,才能被ASP调用吗?
Top
4 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2005-01-22 12:55:13 得分 0
Sub Test1(byref str As Variant)
MsgBox str
End Sub
Sub Test1(byval str As string)
MsgBox str
End Sub
字符串,数字通过值传递或者作为返回值被返回
如果使用引用传递,将参数的类型设为Variant。这样做可以避免一些错误。不过尽可能的减少引用传递参数
Top
5 楼mapcity(沉郁)回复于 2005-01-22 13:12:41 得分 0
哦,明白......
啊,问题解决!
两位赐教,多谢多谢!Top




