51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6740|回复: 13
打印 上一主题 下一主题

[原创] vb函数调用问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-10 15:03:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在脚本中写入这句:ExecuteFile "D:\Program Files\Mercury Interactive\QuickTest Professional\Tests\vb_fun\isnotValid.vbs"
之后是不是就可直接调用isnotValid.vbs中的函数,若是,调试出错,如下图,请问可能是哪里出错了呢

[ 本帖最后由 minliu 于 2006-4-10 15:19 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2006-4-13 21:43:38 | 只看该作者
哦,明白了,谢谢!!
那上边的程序已经实现了email的有效性的判断了,仅像你们上边说的 改成Public Function  IsValidEmail(strEmail )  这样就可以了。
另外,这个可以通过正则表达式实现吗,怎么实现呢。谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-4-13 17:21:17 | 只看该作者
“Dim names, name1, i, c   '//因为name不能定义,所以改为name1
  IsValidEmail = True
  strEmail = "51testing@51testing.com" '//
  names = Split(strEmail, "@")
             x = split(strEmail,"@")  
  For i = 0 to UBound(names)
          msgbox i  '//
          msgbox(names(i)) '//  将邮址以@为标记分成两部分


还有几个函数用法请教:|
split()返回的是一维数组,在上例中的names是否是51testing@51testing.com;UBound(names)返回的值是否是22(len("51testing@51testing.com")-1)
若像上边理解,msgbox(names(i)好象是打出每个元素,“将邮址以@为标记分成两部分 ”又怎么理解,谢谢”

///split将一个字符串分割成子字符串,然后将结果作为字符串数组传回;这里是以分号“@”作为分割字符串51testing@51testing.com的标记。即将51testing@51testing.com分为51testing和51testing.com两个部分。

//names:因为函数Split返回的字符串,所以此时的names相当于一个一维数组,所以names的值应该是51testing和51testing.com,而不是51testing@51testing.com

//UBound(names):这个函数的作用是返回names的维数(即最大的下标)。上面names被分为两部分,所以返回的应该是1而不是22,因为数组下标是从0开始的,所以上面的for循环会执行两次。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2006-4-13 16:34:08 | 只看该作者
首先谢谢你们的帮忙,
我主要想对给出的一个email进行有效性判断:如给出eirio@eyou.com判断结果正确;给出jkdjiu%%判断结果为错。

我还是不清楚email 的有效格式应为什么,尤其@之后的*.*   *.*.*等等是依据什么判断的;(查了一下这么说: 需出现'@',且不在首字符.'@'后出现'.',且不紧跟其后.满足这些就可以了吗)

还有几个函数用法请教:|

split()返回的是一维数组,在上例中的names是否是51testing@51testing.com;UBound(names)返回的值是否是22(len("51testing@51testing.com")-1)
若像上边理解,msgbox(names(i)好象是打出每个元素,“将邮址以@为标记分成两部分
”又怎么理解,谢谢

[ 本帖最后由 minliu 于 2006-4-13 16:45 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-4-13 11:31:06 | 只看该作者
楼主的意思是想检查地址的有效吗,你的脚本写的太复杂,排错以及以后维护的时候不方便。楼主写完整你要执行的功能,我们可以一起写写脚本。下面是将地址分为分部分并显示出来(在楼主代码的基础上修改的)。
Dim names, name1, i, c   '//因为name不能定义,所以改为name1
  IsValidEmail = True
  strEmail = "51testing@51testing.com" '//
  names = Split(strEmail, "@")
             x = split(strEmail,"@")  
  For i = 0 to UBound(names)
          msgbox i  '//
          msgbox(names(i)) '//  将邮址以@为标记分成两部分
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-4-12 22:38:31 | 只看该作者
原帖由 walker1020 于 2006-4-12 21:04 发表
楼主,把第一行改为 Public Function  IsValidEmail(strEmail )  后,我已经在QTP里面把此函数调试通过了,但不没有写代码去调用此函数来进一步验证此函数是否还有问题。 我想 你应该能行的。 看到此帖后 把你的反 ...

谢谢,不在提示这个错误了;等调式过了在在反馈给你。太感谢 各位了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
    发表于 2006-4-12 21:04:13 | 只看该作者
    楼主,把第一行改为 Public Function  IsValidEmail(strEmail )  后,我已经在QTP里面把此函数调试通过了,但不没有写代码去调用此函数来进一步验证此函数是否还有问题。 我想 你应该能行的。 看到此帖后 把你的反馈情况告诉我一下,不管是 调试通过了还是没有通过。  谢谢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2006-4-12 20:45:06 | 只看该作者
    另外 name 好像是QTP的 Key Words 呀,因此我建议你把name 换成别的变量
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2006-4-12 20:42:15 | 只看该作者
    把 第一行 改为   Public Function  IsValidEmail(strEmail )   试试看。我建议你找一本正规的讲解 VBScript的 书看,特别是仔细看 Function  过程的书写方式。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2006-4-12 16:43:57 | 只看该作者
    谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2006-4-11 16:40:09 | 只看该作者
    单步调试一下吧,应该是脚本的错误
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2006-4-11 09:45:51 | 只看该作者
    脚本有错,你贴到QTP里面,然后按一下专家视图的标签就能看见了~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2006-4-10 16:27:11 | 只看该作者
    谢谢,我的代码如下,是判断EMAIL的有效性:

    Public Function IsValidEmail(strEmail As String) As Boolean
      Dim names, name, i, c
      IsValidEmail = True
       
      names = Split(strEmail, "@")

      If( UBound(names) <> 1) Then
        IsValidEmail = False
        Exit Function
      End If

      For Each name In names

        If( Len(name) <= 0 )Then
          IsValidEmail = False
          Exit Function
        End If

        For i = 1 To Len(name)
          c = LCase(Mid(name, i, 1))

          If (InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 And Not IsNumeric(c) )Then
            IsValidEmail = False
            Exit Function
          End If
        Next

        If( Left(name, 1) = "." Or Right(name, 1) = ".") Then
          IsValidEmail = False
          Exit Function
        End If

      Next

      If (InStr(names(1), ".") <= 0 )Then
        IsValidEmail = False
        Exit Function
      End If

      i = Len(names(1)) - InStrRev(names(1), ".")

      If (i <> 2 And i <> 3 )Then
        IsValidEmail = False
        Exit Function
      End If

      If (InStr(strEmail, "..") > 0 )Then
        IsValidEmail = False
        Exit Function
      End If

    End Function
    感觉没少括号啊,提示的是这个函数少吗?谢谢

    [ 本帖最后由 minliu 于 2006-4-10 17:08 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2006-4-10 16:06:45 | 只看该作者
    仔细看看你的vbs的语法吧。不是说了缺少“)”
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 02:16 , Processed in 0.077751 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表