你笑的时候全世界陪你一起笑,你哭的时候只有你一个人哭

Rational Robot中跨脚本调用函数的注意点—Declare语句解释

上一篇 / 下一篇  2006-12-12 15:15:46 / 个人分类:Rational Robot 技术

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


TAG:

 

评分:0

我来说两句

Open Toolbar