51Testing软件测试论坛

标题: vbs调用active dll方法出错 [打印本页]

作者: 隐形人    时间: 2008-5-6 16:59
标题: vbs调用active dll方法出错
现在有一个DDVariableStore.dll文件,在对象为StringUtilities有一个方法
[id(0x6003001c)]
BSTR GetTrimmedQuotedField(
                [in, out] long* startindex,
                [in, out] BSTR* text,
                [in, out] BSTR* delimiters,
                [in, out] short* fieldID);
现在我要在vbs里调用这个方法:
Dim oStrUtils
Set oStrUtils = CreateObject("DDVariableStore.StringUtilities")
On Error Resume Next
GetTrimmedQuotedField1 = oStrUtils.GetTrimmedQuotedField(1, InputRecord, vbTab, 1)
MsgBox Err.Description

运行到这里总会报一个错误:"类型不匹配"
其中InputRecord为string,vbTab为TAB键
请各位高手们帮帮忙,看一下调用时对象为什么不匹配了,BSTR ,long,short分别应该对应vbs的哪种类型?
作者: bluewhy83    时间: 2008-5-6 17:36
标题: 想想
想想
作者: 没有蛀牙    时间: 2008-5-6 18:14
不懂
关注一下
GetTrimmedQuotedField的里的参数是不是都是指针阿
作者: walker1020    时间: 2008-5-6 23:59
类型不匹配  说明你使用的函数的参数类型有问题,QTP 的 帮助文件是否可以帮你解决这个问题?
作者: 隐形人    时间: 2008-5-7 08:47
QTP 的 帮助文件是没有这方面的内容的啦,
另外,这个DDVariableStore.dll的方法用VB调用的语句是
Function GetTrimmedQuotedField1(InputRecord As String, fieldID As Integer, _
                         delimiter As String) As String
   
    If oStrUtils Is Nothing Then Set oStrUtils = CreateObject("DDVariableStore.StringUtilities")
    On Error Resume Next
    GetTrimmedQuotedField1 = oStrUtils.GetTrimmedQuotedField(1, InputRecord, Chr$(9), fieldID)

End Function

这句话是没有错误的,所以不会是指针
作者: 隐形人    时间: 2008-5-7 09:13
谢谢高手的帮忙,这个问题已经找到了解决的方法了,呵呵
在vbs里把下面的语句
GetTrimmedQuotedField1 = oStrUtils.GetTrimmedQuotedField(1, InputRecord, vbTab, 1)
改成
GetTrimmedQuotedField1 = oStrUtils.GetTrimmedQuotedField(cint(1), cstr(InputRecord), cstr(vbTab), cint(1))
就可以了
作者: walker1020    时间: 2008-5-7 22:52
使用了 Cint  和 Cstr函数 后转换了参数的类型,说明还是参数的类型的问题




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2