kaifeng15 发表于 2010-10-26 10:22:44

如何比较两个function取出的值?

我写了两个function函数,function1取了A、B、C三个值,function1取了e、f、g三个值,请教下如何对A、B、C和e、f、g进行比较?

sspku 发表于 2010-10-26 12:52:30

没明白楼主的意思这些值是传入参数,还是返回的参数

kaifeng15 发表于 2010-10-26 13:03:05

回复 2# sspku
返回的值啊,就是写了个函数,取了A\B\C三个值,这三个值需要拿出来与其他函数的值比较
可以返回多个值吗?(不用数组)

msnshow 发表于 2010-10-26 21:10:22

目的是什么

kaifeng15 发表于 2010-10-27 22:35:56

回复 4# msnshow

就把两个函数的返回值拿出来作比较,我发现在QTP中,返回的数组有个问题想请教一下,例如
main ()
{
    dim var_value(1)
    dim i
   var_value = A
   FORi = 0 to1
   msgboxvar_value(i)    /为什么这样子写会提示类型不匹配呢,而如果换成
   Next                               /msgboxvar_value(0)msgboxvar_value(1)这样
}                                       / 写就可以呢?这样单独写不利于调用返回的数组的啊


    function A()
{
    dim value(1)
    value(0)=a
    value(1)=b
    A=value   /返回一个数组
}

kaifeng15 发表于 2010-10-27 22:42:20

回复 4# msnshow

就把两个函数的返回值拿出来作比较,我发现在QTP中,返回的数组有个问题想请教一下,例如
main ()
{
    dim var_value(1)
    dim i
   var_value = A
   FORi = 0 to1
   msgboxvar_value(i)    /为什么这样子写会提示类型不匹配呢,而如果换成
   Next                               /msgboxvar_value(0)msgboxvar_value(1)这样
}                                       / 写就可以呢?这样单独写不利于调用返回的数组的啊


    function A()
{
    dim value(1)
    value(0)=a
    value(1)=b
    A=value   /返回一个数组
}

kaifeng15 发表于 2010-10-27 22:42:28

回复 4# msnshow

就把两个函数的返回值拿出来作比较,我发现在QTP中,返回的数组有个问题想请教一下,例如
main ()
{
    dim var_value(1)
    dim i
   var_value = A
   FORi = 0 to1
   msgboxvar_value(i)    /为什么这样子写会提示类型不匹配呢,而如果换成
   Next                               /msgboxvar_value(0)msgboxvar_value(1)这样
}                                       / 写就可以呢?这样单独写不利于调用返回的数组的啊


    function A()
{
    dim value(1)
    value(0)=a
    value(1)=b
    A=value   /返回一个数组
}

kaifeng15 发表于 2010-10-27 22:42:40

回复 4# msnshow

就把两个函数的返回值拿出来作比较,我发现在QTP中,返回的数组有个问题想请教一下,例如
main ()
{
    dim var_value(1)
    dim i
   var_value = A
   FORi = 0 to1
   msgboxvar_value(i)    /为什么这样子写会提示类型不匹配呢,而如果换成
   Next                               /msgboxvar_value(0)msgboxvar_value(1)这样
}                                       / 写就可以呢?这样单独写不利于调用返回的数组的啊


    function A()
{
    dim value(1)
    value(0)=a
    value(1)=b
    A=value   /返回一个数组
}

xieyang702 发表于 2010-10-29 14:42:10

dim var_value
    dim i
       
   var_value = A
   FORi = 0 to1
   msgboxvar_value(i)
   Next                              
                              


Publicfunction A()

    dim value(1)
    value(0)="a"
    value(1)="b"
    A=value
End Function

这段代码可以运行的

kaifeng15 发表于 2010-10-29 15:56:21

回复 9# xieyang702
谢谢,在QTP中好像不行的我再查查什么原因

cswalkman 发表于 2010-10-29 17:19:55

楼主,QTP好像不支持C语言啊。。

kavensyw 发表于 2010-10-29 18:11:54

本帖最后由 kavensyw 于 2010-10-29 19:13 编辑

用Dicitionary Object返回值
简单示意如下

Dim oDic1,odic2
Set oDic1 = CreateObject("Scripting.Dictionary")
Set oDic2 = CreateObject("Scripting.Dictionary")
Call GetData1(oDic1)
Call GetData2(oDic2)
oItems1 = oDic1.Items
oItems2 = oDic2.Items
'假定两边数量一致
'循环比较,去掉了左右空格
For i=0 To oDic1.Count-1
If Trim(oItems1(i))<>Trim(oItems2(i)) Then
   MsgBox "两边值不等:位置"&(i+1)&vbCrLf _
         &"左边-"&oItems1(i)&vbCrLf _
         &"右边-"&oItems2(i)                              
End If
Next
oDic1.RemoveAll
oDic2.RemoveAll
Set oDic1 =Nothing
Set oDic2 =Nothing

'Key存放a,b,c
'value存放e,f,g
Function GetData1(oDic)
      Dim a,b,c
      'Example               
      a=1:b=2:c=3      
      oDic.Add 1,a
      oDic.Add 2,b
      oDic.Add 3,c
End Function
Function GetData2(oDic)
      Dim e,f,g
      'Example               
      e=1:f=555:g=3
      oDic.Add 1,e
      oDic.Add 2,f
      oDic.Add 3,g
End Function

momang 发表于 2010-10-29 22:43:47

QTP支持的 VBS

kaifeng15 发表于 2010-10-31 21:49:01

回复 12# kavensyw

谢谢!

xieyang702 发表于 2010-11-1 16:05:19

本帖最后由 xieyang702 于 2010-11-4 12:15 编辑

可以的呀,我就是在QTP里调试正确的啊
:o
运行前你需 勾选 vb 插件

Jun_Li 发表于 2010-11-8 13:22:41

1.返回数组
2.返回三个值的连接字符串
写个比较函数传两数组或俩字符串

vernzhang1980 发表于 2010-11-9 17:43:49

为什么不用VBS支持的StrComp方法呢,省时省力!
页: [1]
查看完整版本: 如何比较两个function取出的值?