【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