技术开发 频道

Rational Robot中跨脚本调用函数

    【IT168 技术文章】

    在Robot中Declare语句的格式是这样的(只看Function部分,Sub其实也一样,只是没有返回值):

    Declare Function name [ libSpecification ]  [ ( arg [ As type ], ... ) ] [ As functype ]

    常见的例子如:    
   Declare function sum(x as integer) as integer

    Sub Main

    Dim Result As Integer

    dim i as integer

    dim isum as integer

    for i = 1 to 5

    isum=sum(i)

    msgbox isum

    next i

    End Sub

    function sum (i as integer) as integer

    dim j as integer

    j = j + i

    sum = j

    end function

    Declare一个函数时,Declare必须在main和function之前,单步跟踪的话可以看到当程序执行到sum语句时,会自动跳转到function sum 处。如上面这个例子,main和function都在同一脚本中,Declare时可选参数[ libSpecification ] 是不需用到的。但如果我们编写的main和function分别在不同脚本时,则[ libSpecification ] 就是必须要写明的。

    [ libSpecification ] 可以有如下方式:BasicLib "libName"  [ Alias "aliasname" ]

    BasicLib和Alias都是关键字,用来指明跨脚本的名称和在那个脚本中函数的名称。因为是跨脚本调用,所以指明函数所在脚本的名称(libName)是必须的,那么aliasname呢?aliasname是代表原始函数的名称:如果你想在本脚本中声明一个新的函数名称,但功能与另一个脚本中的某个函数一样,需要指定那个脚本中函数的名称(原始函数名,也叫aliasname)。

    即是说如果我在脚本2中Declare一个脚本1中的函数,则需这样声明:

    Declare Function 脚本2中的函数名 BasicLib "脚本1的名字" Alias "脚本1中的函数名"((arg [ As type ], ... )  As functype

    还是看看实际的例子吧:

    脚本1:test          declare function sum(x as integer) as integer

    Sub Main

    Dim Result As Integer

    dim i as integer

    dim isum as integer

    for i = 1 to 5

    isum=sum(i)

    msgbox isum

    next i

    End Sub

    function sum (i as integer) as integer

    dim j as integer

    j = j + i

    sum = j

    end function

    脚本2:test2(调用脚本1中的函数,但是名字改为calc)          declare function calc basiclib "test" alias "sum"(x as integer) as integer

    Sub Main

    Dim Result As Integer

    dim i,isum as integer

    'Initially Recorded: 2006-11-21  10:40:39

    'scrīpt Name: test2

    for i = 1 to 3

    isum = calc(i)

    msgbox isum

    next i

    End Sub
 

0
相关文章