打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
foxbot

​foxbot编程手册  

为了提升浏览体验,原视图版网页已升级为如下版式

foxbot编程手册

foxbot编程手册.doc

1.53M, 78页, 79次阅读 [立即下载]

举报分享于2018-10-11 06:55

富士康〃工業機器人

FOXBOT

編程手冊

( Ver. 2007.1 )

1/78页

FOXBOT〄編程手冊

2/78页

FOXBOT〄編程手冊

簡 介

FOXBOT的編程手冊由FOXBOT指令手冊和Cypress Enable編輯器語言參考手冊組成。 FOXBOT指令手冊主要用于機器人的運動控制指令;Cypress Enable 主要用于程序的變量命名,流程控制,子程序等。程序編輯界面是Cypress Enable編輯器,程序中的語句語法要求應符合Cypress Enable的要求。

3/78页

FOXBOT〄編程手冊

FOXBOT

指令手冊

4/78页

目 錄

ACCEL............................................................................................................................................. 1 CURPOS .......................................................................................................................................... 1 DECEL............................................................................................................................................. 1 DEFIO .............................................................................................................................................. 1 DEFPOS........................................................................................................................................... 2 DELAY ............................................................................................................................................ 2 DEFJNT ........................................................................................................................................... 2 DIST................................................................................................................................................. 2 DRIVE ............................................................................................................................................. 3 DRIVEA........................................................................................................................................... 3 FIG ................................................................................................................................................... 3 GOHOME ........................................................................................................................................ 3 HOME .............................................................................................................................................. 4 IN ..................................................................................................................................................... 4 J2P .................................................................................................................................................... 5 MOVE .............................................................................................................................................. 5 OUT ................................................................................................................................................. 6 POSRX............................................................................................................................................. 7 POSRY ............................................................................................................................................. 7 POSRZ ............................................................................................................................................. 7 POSX ............................................................................................................................................... 7 POSY ............................................................................................................................................... 8 POSZ ................................................................................................................................................ 8 RESETIO ......................................................................................................................................... 8 ROBOTSTOP .................................................................................................................................. 8 ROTATE........................................................................................................................................... 9 SETIO .............................................................................................................................................. 9 SPEED ........................................................................................................................................... 10 WAIT.............................................................................................................................................. 10 附錄................................................................................................................................................ 10

5/78页

FOXBOT〄編程手冊

ACCEL

功能:指定內部加速度比例

格式:ACCEL <加速度比例>

範例:ACCEL 50

CURPOS

功能:取得目前的位置 (type P格式)

格式:Position type 變數 = CURPOS

說明:

範例:

DEFPOS lp1

lp1=CURPOS

MSGBOX POSX(lp1) & chr(13) & chr(10) &_

POSY(lp1) & chr(13) & chr(10) &_

POSZ(lp1) & chr(13) & chr(10) &_

POSRX(lp1) & chr(13) & chr(10)&_

POSRY(lp1) & chr(13) & chr(10)&_

POSRZ(lp1) & chr(13) & chr(10)&_

FIG(lp1)

DECEL

功能:指定內部減速度比例

格式:DECEL <減速度比例>

說明:

範例:

DECEL 50

DEFIO

功能:聲明IO變數

格式:DEFIO <變量名稱> = <I/O變量類型>, <端口地址>

說明:

通過變量名聲明指定變量作為一個IO變量

<IO變量類型>選擇 IO變量的類型。IO變量的類型包括:BIT:1位:,BYTE:8位:,INTEGER:16位: ,端口地址,指定輸入輸出IO的開始號

相關指令:IN OUT SET RESET

範例:

Dim a AS Integer

DEFIO samp1= INTEGER,0

‟聲明一個來自端口15的IO字類型變量。Sampl返回值是16位的來自從0到15端口整型

IN a=samp1

Msgbox

6/78页

FOXBOT〄編程手冊

Notes:

對于字或整型,使用MSB作為一個信號位。

Byte 允許數字值范圍,MSB端口號:開始端口地址,7

Integer 允許數字值范圍,MSB端口號:開始端口地址,15

DEFPOS

功能:聲明一個位置類型變量

格式:DEFPOS <變量名>

舉例:DEFPOS lpx „聲明lpx作為位置類型變量 注意:一個語句只能聲明一個位置變量類型

相關指令 poseP

格式:Dim lpx as poseP

DELAY

功能:暫停程序處理,延時一個指定的周期時間, 格式:DELAY <Delay time> 說明:程序處理停止直到暫停時間到。單位:ms 舉例:

DIM li1 As Integer Delay 100

„延時100ms(0.1s)

Delay li1+10

„延時li1+10ms

DEFJNT

功能:聲明一個關節類型變量

格式:DEFJNT<變量名>

舉例:

DEFJNT ljx

„聲明ljx作為一個關節類型變量

DIST

功能:返回兩點之間的距離

格式:DIST (<位置類型變量1>,<位置類型變量2>) 說明:獲得位置1 和位置2之間的距離

舉例:

Dim lf1 AS Single

DEFPOS lp1

7/78页

FOXBOT〄編程手冊

DEFPOS lp2

lp1=CURPOS

lp1.x=lp2.x+10

lp1.y=lp2.y+10

lp1.z=lp2.z+10

lp1.rx=lp2.rx+10 lp1.ry=lp2.ry+10 lp1.rz=lp2.r2+10 lf1=DIST(lp1,lp2) „lf1等于lp1和lp2之間的距離

MSGBOX lf1

DRIVE

功能:執行每個軸的相對運動

格式:DRIVE (<軸號>,<相對運動量>) 說明:移動指定軸,移動量用角度來表示,角度的正負表示移動的方向。

舉例 :DRIVE 1,30 '移動1軸,30度。

DRIVEA

功能:執行每個軸的絕對運動

格式:DRIVEA <軸號>,<角度> 說明:移動指定軸到指定角度

舉例:

DRIVEA 1,-30

„移動1軸到-30度。

FIG

功能:提取一個形態。

格式:FIG:位置類型變量:

說明:從位置數據提取一個形態

舉例:

DIM lp1 AS poseP li1=FIG(lp1)

„指定一個lp1的形態給li1

GOHOME

功能:移動到HOME語句定義的坐標位置

8/78页

FOXBOT〄編程手冊

格式: GOHOME

說明:移動機器人使用PTP控制從當前位置到HOME位置

使用HOME語句聲明一個原點位置

如果沒有設置HOME,執行這個語句將會出現錯誤。

舉例:GOHOME

„機器人從當前位置移動到原點位置

HOME

功能:聲明任意位置為原點位置

格式:HOME <位置類型變量>

說明:聲明任意的位置類型的坐標作為原點位置

舉例:Dim JJ As poseJ

Speed 30

JJ.J5 = 20

' 賦值20度給JJ.J5,其他JJ的組成是0

Home JJ

' 設置JJ作為原點位置

GoHome

' 移動到原點位置

End

IN

功能:IO變量值賦給指定變量

格式:IN <變量名>,,IO變量,

舉例:

'!TITLE "EXAMPLE_IN"

Dim li1 As Integer

' Declare li1 and li2 as Integer Dim li2 As Integer

' Declare samp1 as Type IO variable, DEFIO samp1 = Integer, 48

' length is 16 (integer), starting from IO(48)

' Get the current IO status defined in samp1

' into integer format and assign it to li1

In li1 = samp1

' Get IO status starting from 56 into an integer

' and assign it to li2

In li2 = IO(56)

' Show li1 and li2

9/78页

FOXBOT〄編程手冊

' (if only IO(56) is on, li1 = 256 meaning 100000000

' in binary starting from port 48 and li2 = 1)

MsgBox "li1 = " & li1 & Chr(13) & Chr(10) _ & "li2 = " & li2

J2P

功能:關節類型變量轉換成位置類型變量。

格式:J2P<關節類型變量>,<位置類型變量>

舉例:

Dim lj1 as poseJ

Dim lp1 as poseP

lj1.j1=0

lj1.j2=0

lj1.j3=0

lj1.j4=0

lj1.j5=0

lj1.j6=0

J2P lj1,lp1

Msgbox lp1.x & “ ”lp1.y& “ ”lp1.z_

lp1.rx & “ ”lp1.ry& “ ”lp1.rz

MOVE

功能:移動機器人末端操作器到指定坐標。

格式:MOVE<插補方法>,@<到達目標位置確認形式> ,<路徑目標位置> ,<S=速度百分比> 說明:移動機器人從當前位置到指定的目標位置。

對于<位置>,位置類型<P型>,關節類型<J型>可以使用。

插補方法 說 明

PTP(點到點):運動從一個點到另一個點,機器人移動的路徑依賴機器人的姿態,不是一條直線。

P(PTP)

運動路徑可以不是一條直線

CP控制,到達目標位置的路徑是一條直線

A B

L

運動路徑是一條直線

機器人手臂從一個運動到另一個運動有三種方法確定第一個運動的完成。

@0:運動位置到達目標位置就算到達。

10/78页

FOXBOT〄編程手冊

@P:實際位置到達目標位置附近即算到達,且不減速而往下一位置。

@E:編碼器值核實點, 實際位置到達目標位置,停下來,檢查編碼器的值是否在一定時間內不超出一定範圍才算到達。 下面的例子都是機器人從當前位置P1經過P2

到達P3:

經過運動(@P) „PROGRAM PASS_MOVE

P1 P2 „TAKEARM

MOVE P, @P , P(2) ,S=10

MOVE P, @0 , P(3) ,S=10 P3

END

PROGRAM END_MOVE

伺服偏離(@0) TAKEARM

MOVE L, @0 , P(2),S=10 P1 P2 MOVE L, @0 , P(3),S=10

END P3 PROGRAM ENCODER_MOVE 編碼器值檢查運動(@E) TAKEARM

MOVE L,@E, P(2),S=10 P1 P2 MOVE L,@0, P(3),S=10

END

P3

OUT

功能:給輸出IO變量賦值

格式:OUT <I/O變量>=<變量名>

舉例:'!TITLE "EXAMPLE_OUT"

Dim li1 As Integer

' Declare li1 as Integer

' Declare samp1 as Type IO variable, length is 16 (integer), starting from IO(30)

DEFIO samp1 = Integer, 30

' assign 2^5-1 = 31 (11111 in Hex value) to li1 li1 = 2^5-1

' Output the li1 data from the port declared in samp1 Out samp1 = li1

' Delay 3 seconds

Delay 3000

' assign 2^5-1 = 31 (11111 in Hex value) to li1 li1 = 2^5-1

' Output the li1 data from the port 38

Out IO(38) = li1

11/78页

FOXBOT〄編程手冊

POSRX

功能:獲得繞X軸旋轉的角度

格式:POSRX <位置類型變量>

舉例:

Dim lf1 As Single DEFPOS lp

lp1=CURPOSE

lf1=POSRX(lp1)

„指定X軸旋轉lp1部分給lf1

POSRY

功能:獲得繞Y軸旋轉的角度

格式:POSRY<位置類型變量>

舉例:

Dim lf1 As Single DEFPOS lp

lp1=CURPOSE

lf1=POSRY(lp1)

„指定Y軸旋轉lp1部分給lf1

POSRZ

功能:獲得繞Z軸旋轉的角度

格式:POSRZ<位置類型變量>

說明:從位置坐標系中提出繞Z軸旋轉部分 舉例:Dim lf1 As Single

DEFPOS lp

lp1=CURPOSE

lf1=POSRZ(lp1) „指定Z軸旋轉lp1部分給lf1

POSX

功能:獲得X坐標

格式:POSX <位置類型變量>

舉例:DIM lf1 As Single

DEFPOS lp1

lf1=POSX(lp1)

„指定lp1的X部分給lf1

12/78页

FOXBOT〄編程手冊

POSY

功能:獲得Y坐標

格式:POSY <位置類型變量>

說明:從位置類型或向量類型坐標值提出Y部分。 舉例:

DIM lf1 As Single DIM lp1 As poseP

lf1=POSY(lp1)

„指定lp1的Y部分給lf1

POSZ

功能:獲得Z坐標

格式:POSZ <位置類型變量>

說明:從位置類型變量坐標值提出Z部分。 舉例:DIM lf1 As Single DIM lp1 As poseP

lf1=POSZ(lp1) „指定lp1的Z部分給lf1

RESETIO

功能:設置一個IO口為OFF

格式:RESETIO <IO變量>

說明: 設置通過IO變量標明的端口為OFF 舉例:

„!titile “example_setio”

„takearm

RESETIO IO(40)

„設置IO40為OFF

ROBOTSTOP

功能:機器人運行停止

格式:ROBOTSTOP

說明:機器人進入持續停止狀態,關閉馬達電源,關閉機器人正在操作的輸出信號。

舉例:„PROGRAM TSR1

ROBOTSTOP

„停止機器人

END

13/78页

FOXBOT〄編程手冊

ROTATE

功能:繞指定向量執行旋轉運動

格式:ROTATE <旋轉平面>, <角度> ,<向量>,<速度百分比> 說明:

旋轉平面:XYH,XZH,YZH; XY,XZ,YZ 旋轉平面與XYH,XZH,YZH平行,向量是相對工具坐標系, 旋轉平面與XY,YZ,YZ平行,向量是相對工件坐標系 半徑應是向量在指定平面的投影距離。

注意:機器人6軸端面與指定旋轉平行,才能畫圓。 范例:

' Assign J(0) position J(0).J1 = 0

J(0).J2 = 0

J(0).J3 = 90

J(0).J4 = 0

J(0).J5 = 30

J(0).J6 = 0

' Move to J(0)

MOVE P, J(0), S=50

' Assign J(0).J2 a new position

J(0).J2 = 60

' Move to new J(0)

MOVE P, J(0), S=50

' Rotate 360 degree on XY plan around a vector V(0) described in Tool Coordinate

ROTATE XYH,360,V(0),S=100 ' Assign J(0).J2 a new position

J(0).J2 = 0

' Move to new J(0)

MOVE P, J(0), S=50

End

SETIO

功能:設置一個IO口為ON。

格式:SET IO (IO變量)

說明:設置指定IO為ON

舉例„!titile “example_setio”

„takearm

SETIO (40)

14/78页

FOXBOT〄編程手冊

„設置IO(24)點為ON

SPEED

功能:指定內部關節合成速度。

格式:SPEED <運動速度>

說明:運動速度是內部關節合成最大速度的百分比:,:,范圍:0.1-100

最大速度是指TCP點的最大速度

舉例:

SPEED 50

機器人有內部速度和外部速度。外部速度是指示教器上設定的速度

內部速度是指用SPEED指令設定的值。

實際速度=最大速度*內部速度*外部速度

例如:

內部速度=70%

外部速度30%

實際速度=最大速度*0.7*0.3

舉例:

SPEED 50

WAIT

功能:程序停止直到條件滿足。

格式:WAIT <條件表達>

說明:程序被停止直到條件被滿足。

舉例:WAIT IO(10) = ON

‟程序等一直到IO(10)為ON

[ 注 意 ]

, 不能在指令后直接添加注釋,需要另取一行,以單引號(‟)開頭。

, 程序編寫后不能以只讀(only read)的方式存儲。

10 

15/78页

FOXBOT〄編程手冊

附錄

11 

16/78页

FOXBOT〄編程手冊

指令 說明 頁數

指定內部加速度比例 ACCEL

CURPOS 取得目前的位置 (type P格式)

指定內部減速度比例 DECEL DEFIO 宣告IO變數 DEFJNT 宣告Joint type變數 DEFPOS 宣告Position type變數

使程式執行延遲一段指定的時間 DELAY

取得兩點間的距離 DIST

執行單軸之相對運動 DRIVE

執行單軸之絕對運動 DRIVEA FIG 取得一type P變數之figure值 GOHOME 移動至HOME指令所指定之位置 (Home位置) HOME 指定Home位置 IN 將IO埠狀態資料給一變數 (此資料定義於一IO變數內)

關節變量轉換成位置變量 J2P

移動至指定的位置 MOVE OUT 輸出IO狀態資料至IO埠 (此IO埠定義於一IO變數內) POSRX 取得一type P變數之RX值 POSRY 取得一type P變數之RY值 POSRZ 取得一type P變數之RZ值 POSX 取得一type P變數之X值 POSY 取得一type P變數之Y值 POSZ 取得一type P變數之Z值 RESETIO 使一個IO埠設為OFF ROBOTSTOP 使robot停止並SERVO OFF

對某一指定向量作旋轉運動 ROTATE SETIO 使一個IO埠設為ON

指定內部速度比例 SPEED

根據某一狀況暫停程式執行 WAIT

12 

17/78页

Cypress Enable

編輯器

語言參考手冊

18/78页

目 錄

CYPRESS ENABLE 程序編寫規范 ................................................................................................. 0

注釋.................................................................................................................................................. 0 數字.................................................................................................................................................. 0 變量和常量名.................................................................................................................................. 0 變量類型.......................................................................................................................................... 1 其他數據類型.................................................................................................................................. 2 控制結構.......................................................................................................................................... 3 子程序和函數.................................................................................................................................. 5 BYREF & BYVAL參數傳遞 ............................................................................................................. 5

文件輸入輸出.................................................................................................................................. 6 數組.................................................................................................................................................. 7 腳本語言概述...................................................................................................................................... 8 函數和語句快速參考...................................................................................................................... 8

-Z .................................................................................................................................... 12 語言參考A

ABS函數 ........................................................................................................................................ 12 ASC函數 ........................................................................................................................................ 12 ATN函數 ........................................................................................................................................ 13 CBOOL 函數 .................................................................................................................................. 13 CDATE 函數................................................................................................................................... 13 CDBL 函數..................................................................................................................................... 14 CHR 函數 ....................................................................................................................................... 14 CINT 函數 ...................................................................................................................................... 15 CLNG函數 ..................................................................................................................................... 15 CLOSE 語句 ................................................................................................................................... 15 CONST 語句 ................................................................................................................................... 16 COS函數 ........................................................................................................................................ 17 CSNG函數 ...................................................................................................................................... 17 CSTR 函數 ..................................................................................................................................... 17 CVAR 函數..................................................................................................................................... 18 DATE函數 ...................................................................................................................................... 18 DAY 函數 ....................................................................................................................................... 19 DIM 語句 ....................................................................................................................................... 19 DO...LOOP語句 .............................................................................................................................. 20

END語句 ........................................................................................................................................ 20

19/78页

FOXBOT〄編程手冊

EOF函數 ....................................................................................................................................... 21 EXIT語句 ....................................................................................................................................... 21 EXP函數 ........................................................................................................................................ 22 FILECOPY函數............................................................................................................................... 22

FILELEN函數 ................................................................................................................................. 22 FIX函數 ......................................................................................................................................... 22 FOR EACH … NEXT語句 ................................................................................................................ 23

FOR...NEXT語句 ............................................................................................................................ 23

FREEFILE函數 ............................................................................................................................... 24

FUNCTION 語句.............................................................................................................................. 24

GLOBAL語句 ................................................................................................................................. 25 GOTO 語句 .................................................................................................................................... 26 HOUR函數 ..................................................................................................................................... 26 IF...THEN...ELSE語句 ..................................................................................................................... 26

INPUT #語句 ................................................................................................................................... 27 INPUT 函數 .................................................................................................................................... 28 INSTR函數 ..................................................................................................................................... 28 INT函數 ......................................................................................................................................... 29 ISARRAY函數 ................................................................................................................................ 29 ISDATE函數 ................................................................................................................................... 29 函數 ISEMPTY................................................................................................................................ 30

ISNULL函數................................................................................................................................... 30 ISNUMERIC函數............................................................................................................................. 30

KILL語句 ....................................................................................................................................... 31 LBOUND函數................................................................................................................................. 31 LCASE函數 .................................................................................................................................... 32 LEFT函數 ....................................................................................................................................... 32 LEN函數 ........................................................................................................................................ 33 LET 語句 ........................................................................................................................................ 33 LINE INPUT #語句 ........................................................................................................................... 34

LOF函數 ....................................................................................................................................... 34 LOG函數 ........................................................................................................................................ 34 函數MID........................................................................................................................................ 35 MINUTE函數 .................................................................................................................................. 35 MONTH函數 .................................................................................................................................. 36 NAME語句 ..................................................................................................................................... 36 NOW函數....................................................................................................................................... 36 ON ERROR語句 .............................................................................................................................. 36

20/78页

FOXBOT〄編程手冊

OPEN語句 ...................................................................................................................................... 37 OPTION BASE語句 ......................................................................................................................... 38

OPTION EXPLICIT語句 ................................................................................................................... 38

PRINT方法 ..................................................................................................................................... 39 RANDOMIZE語句 ........................................................................................................................... 41

REDIM 語句................................................................................................................................... 41 REM語句 ....................................................................................................................................... 41 RIGHT 函數 .................................................................................................................................... 42 RND函數........................................................................................................................................ 43

SECOND函數.................................................................................................................................. 43 SEEK 函數...................................................................................................................................... 44 SEEK 語句...................................................................................................................................... 44 SELECT CASE 語句......................................................................................................................... 45

SENDKEYS函數 ............................................................................................................................. 46

SIN 函數 ........................................................................................................................................ 46 SPACE函數 ..................................................................................................................................... 47 SQR 函數 ....................................................................................................................................... 47 STATIC語句 .................................................................................................................................... 48 STOP 語句 ...................................................................................................................................... 48 STR 函數 ........................................................................................................................................ 49 STRCOMP函數 ............................................................................................................................... 49

STRING 函數 .................................................................................................................................. 50 SUB 語句 ....................................................................................................................................... 50 TAN 函數 ....................................................................................................................................... 51 TIME 函數 ...................................................................................................................................... 51 TIMER事件 .................................................................................................................................... 51 TRIM, LTRIM,RTRIM函數 ............................................................................................................ 52

TYPE 語句...................................................................................................................................... 52 UBOUND函數................................................................................................................................. 53 UCASE 函數 .................................................................................................................................. 54 VAL函數 ........................................................................................................................................ 54 VARTYPE......................................................................................................................................... 54 WEEKDAY 函數.............................................................................................................................. 55

WHILE...WEND 語句 ...................................................................................................................... 55

WRITE # 語句 ................................................................................................................................ 56 YEAR函數...................................................................................................................................... 56

21/78页

FOXBOT〄編程手冊 Cypress Enable 程序編寫規范

這部分主要描述Enable語言的一般元素,包括注釋,語句,數字的不同表達形式,變量數據類型(包括用戶定義類型),多流程程序控制結構等。

注釋

格式:‟ 注釋內容

說明:注釋是不可執行的代碼行,是為了便于編程人員閱讀程序而加入的。注釋目前只能單獨占一行,Enable將忽略出現在撇號或者Rem之后的任何文本。Rem和所有其他的關鍵字以及Enable的大部分名稱都是大小寫不敏感的。

范例:

MsgBox Msg ' 顯示信息

語句

說明:在Enable里沒有語句結束符,一行可以放多條語句,通過“:”隔開。

范例:

x.AddPoint(25,100) : x.AddPoint(0,75) 等價于:

x.AddPoint(25,100)

x.AddPoint(0,75)

續行符

在Enable中續行符用下划線 “_”表示,在續行符”_”前后都要有空格。

范例:

x.AddPoint _

(25,100)

數字

Cypress Enable支持三種數字表達形式:十進制,八進制和十六進制。本手冊中所使用的大部分數字用十進制表示。使用八進制或者十六進制需要分別在數字前加前綴”&O”或”&H”。 變量和常量名

22/78页

FOXBOT〄編程手冊

變量和常量名必頇以字母開頭,可以包含大寫字母A~Z,小寫字母a~z,下划線”_”和數字0~9。變量與常量名都不超過40個字符,也不能使用保留字(可參見本手冊語言概述部分的保留字表)。但是對象成員名和屬性名不受此項規則的限制,可以使用保留字。 變量類型

Variant變體變量

說明:與VB類似,當在Cypress Enable中引入變量時不必在首行聲明(如果使用了option explicit則例外,可參見option explicit說明)。如果使用一個變量但沒有事先聲明則系統隱式聲明其為Variant類型。Variant變量也可以使用”As variant”以Dim x As Variant的形式顯式地聲明。Variant數據類型能夠存儲數值,字符串,日期和時間。使用Variant類型變量時不必顯式地從一個類型轉換到另外一個類型,數據類型轉換是自動完成的。

格式:Dim 變量名As 變量類型

范例:

Sub Main

Dim x 'variant variable

x = 10

x = x + 8

x = "F" & x

print x 'prints F18

End Sub

一個Variant類型變量可以很容易地改變其類型,其內部表示可以使用VarType函數確定。VarType返回一個與顯式數據類型一致的值(可在語言參考 A~Z參見VarType的返回值)。

當以Variant變量存儲數據時所使用的數據類型總是盡可能緊湊的。比如,如果對Variant變量賦值一個很小的整數值,它將以integer類型存儲;如果賦值的數據包含小數部分,將以double類型存儲。

23/78页

FOXBOT〄編程手冊

如果運用Variant變量進行數值運算,往往有必要確定其存儲的是否是有效的數值,從而避免出錯。這可由IsNumeric函數實現。

變體變量和串聯

字符串和數字串聯的結果是字符串。使用”&”操作符可以確保無論何種數據類型都能連接成功,&操作符不能對數值進行數學運算,它只是簡單地把它們當作字符串連接起來。可以使用IsEmpty函數確認Variant變量之前是否被賦過值。

其他數據類型

Cypress Enable 有12個數據類型,在下表只列出常用的几種:

數據類型表

類 型 類型聲明符 存儲空間 大小范圍 類型聲明 Byte 0 to 255 Dim Bvar As Byte 1字節

Boolean Dim Boolvar As Boolean 2個字節

String $ Dim Str Var As String 字符串長度 0 to 65,500 字符

Interger % Dim Int_Var As Integer 2 字節

Long & Dim Long_Var As Long 4 字節

Single ! Dim Sing_Var As Single 4 字節

Double # Dim Dbl_Var As Double 8字節

Variant Dim X As Any 按需分配

User Defined Type 每個元素的

尺寸之和

變量范圍

Cypress Enable程序可由多個文件組成,每個文件可包含多個子程序和函數。不同的文件中變量名可以重復使用,變量可以是局部的,也可以是全局的。

變量的聲明

在Cypress Enable中變量用DIM語句聲明。要聲明一個除variant類型之外的變量,必頇在變量名后跟隨As說明變量類型或者附加類型聲明符。例如,%代表Integer類型。

24/78页

FOXBOT〄編程手冊 格式:Dim 變量名 As 變量類型

范例:

Sub Main

Dim X As Integer

Dim Y As Double

Dim Name$,Age%' multiple declaration on one line Dim v

End Sub

控制結構

Cypress Enable有完整的過程控制功能,可用的控制結構有Do循環,While循環,For循環,Select Case, If Then和If Then Else。另外,Cypress Enable還有一個跳轉語句:GoTo。GoTo語句跳轉到語句所指定的標號處。

范例:

Goto label1

…….

label1:

程序跳到以”Label1:”所標記的部分

循環結構

循環結構是指程序重復執行循環語句中的一行或多行代碼。

DO 循環

Do...Loop循環允許以不確定的次數重復執行某個語句塊。Do...Loop的變種有Do While 和Do Loop While。

格式:

Do While條件

語句塊...

[Exit Do]

語句塊...

Loop

Do

語句塊...

Loop While 條件

Do While在進入循環體之前檢查條件,當條件滿足時才執行循環體里的程序塊。Do Loop While在執行語句塊之后檢查條件,因此可以保証語句塊至少執行一次。

While 循環

25/78页

FOXBOT〄編程手冊

While …Wend 循環與Do …While循環類似,在執行循環體之前檢查循環條件。 While 條件

語句塊...

Wend

For ... Next 循環

For…Next循環有一個循環計數變量,它以確定的次數執行循環體。循環計數變量在每次執行循環之后增加或減少。如果未用Step指定變化幅度計數器缺省增加1。

格式:

For 變量 = <開始值> To <結束值> [Step <增量>]

語句塊...

Next

If和Select語句

If…Then塊有單行和多行語法。If語句的條件可以是比較式或表達式,但它必頇可以轉化為True 或False。

格式:

If 條件Then 語句塊..'單行語法

If 條件 Then '多行語法

語句塊...

End If

If語句的一個變種是If...Then...Else語句。根據的條件不同執行不同語句塊時可使用該語句。還有一個變種是If...Then...ElseIf...語句,使用該語句有可能使代碼過長并且難于理解,此時可以考慮用Select語句代替。

If 條件 Then

語句塊...

ElseIf 條件 Then

語句塊...

Else

語句塊...

End If

Select Case

Select Case語句測試同一個變量的值,根據不同的值執行不同的語句塊。該語句易于閱讀,理解和跟蹤,應該用該語句代替復雜的If...Then...ElseIf語句。

格式:

Select Case <表達式>

Case 值1

語句塊

26/78页

FOXBOT〄編程手冊

Case值2

語句塊

Case值3

語句塊

...

Case Else

語句塊

End Select

子程序和函數

命名習慣

子程序和函數名必頇以字母開頭,可以包含大寫字母A~Z,小寫字母a~z,下划線”_”和數字0~9。子程序和函數名不超過40個字符,且不能使用保留字(可參見本手冊語言概述部分的保留字表)。

子程序格式:

Sub <子程序名>

語句塊

End Sub

函數格式:

Function <函數名> As <類型>

語句塊

<函數名>=<表達式>

語句塊

End Function

ByRef & ByVal參數傳遞

關鍵字ByRef允許其他子程序和函數改變以參數形式傳入的變量;關鍵字ByVal不允許其他子程序和函數改變以參數形式傳入的變量,并且參數在它們的局部過程之外不能重新賦值。ByRef是Enable的默認參數傳遞方式,不需要顯式說明。在傳遞參數時可以用::強制進行ByVal傳遞。如下例:

SubOne var1,var2,(var3)

參數var1,var2以ByRef方式傳遞,形參指向實參內存單元,當SubOne形參被改變時,實參也將改變;參數var3用::強制以 ByVal方式傳遞,在函數內值的改變不會影響到函數

27/78页

FOXBOT〄編程手冊 外變量的值。

Function R( X As String, ByVal n As Integer)

在本例中函數R接受兩個參數X和n。第二個參數n按值傳遞,當改變形參的值時,實

參的值不會改變。下列樣例代碼中數組變量和用戶定義類型變量按引用傳遞參數。

范例:

Sub Main

Dim x(5) As Integer

Dim i As Integer

for i = 0 to 5

x(i) = i

next i

Print i

Joe (i), x „ ::強制i進行值傳遞

print "should be 6: "; x(2), i

End Sub

Sub Joe( ByRef j As Integer, ByRef y() As Integer )

print "Joe: "; j, y(2)

j = 345

for i = 0 to 5

print "i: "; i; "y(i): "; y(i)

next i

y(2) = 3 * y(2)

End Sub

文件輸入輸出

Enable支持順序文件和二進制文件I/O。適用于文件訪問的函數和語句有:EOF, FileCopy, FileLen, Seek, Open, Close, Input, Line Input, Print 和Write

' File I/O Examples

Sub Main

Open "TESTFILE" For Input As #1 ' Open file.

Do While Not EOF(1) ' Loop until end of file.

Line Input #1, TextLine ' Read line into variable.

Print TextLine ' Print to Debug window.

Loop

Close #1 ' Close file.

End Sub

Sub FileIO_Example()

Dim Msg ' Declare variable.

Call Make3Files() ' Create data files.

Msg = "Several test files have been created on your disk. "

Msg = Msg & "Choose OK to remove the test files."

MsgBox Msg

For I = 1 To 3

Kill "TEST" & I ' Remove data files from disk.

Next I

End Sub

28/78页

FOXBOT〄編程手冊 Sub Make3Files ()

Dim I, FNum, FName ' Declare variables.

For I = 1 To 3

FNum = FreeFile ' Determine next file number.

FName = "TEST" & FNum

Open FName For Output As FNum ' Open file.

Print #I, "This is test #" & I ' Write string to file.

Print #I, "Here is another "; "line"; I

Next I

Close ' Close all files.

End Sub

數組

Cypress Enable支持一維和多維數組。數組可以使用相同的名稱代表一系列具有相同數據類型的變量,每個變量都有唯一的索引。數組有上下邊界。Enable為數組中的每個索引數據分配內存空間。在使用中定義數組不要不必要地過長。

數組中所有的元素都有相同的數據類型。Enable支持的數組變量類型有:bytes, Booleans,

longs, integers, singles, double, strings, variants 以及用戶自定義類型。

聲明固定大小數組的方法有:

, 全局數組,使用Dim語句在過程代碼模塊之外聲明數組;

, 局部數組,使用Dim語句在過程內聲明數組。

Cypress Enable 支持動態數組。聲明數組時必頇給出數組上邊界,并且上邊界必頇是整數。

范例:

Dim ArrayName(10) As Interger

Dim Sum(20) As Double

創建全局數組時只頇在過程之外使用Dim語句。

Dim Counters(12) As Integer

Dim Sums(26) As Double

在過程內聲明數組使用Static語句與使用Dim語句效果相同。

Static Counters (10) As Integer

Static Sums (22) As Double

第一個聲明創建一個具有11個元素的數組,下標從0到10。若要改變缺省的下邊界,

29/78页

FOXBOT〄編程手冊 可在模塊聲明區域放置一個Option Base語句。

Option Base 1

另一個方法是使用To關鍵字顯式指定下邊界(-32768~32767的整數)。

Dim Counters (1 To 13) As Integer

Dim Sums (100 To 126) As String

在前一個聲明中,數組Counters的下標索引從1到13,數組SUM的下標索引從100到126。

注意:許多其他的Basic版本允許不事先聲明就可以使用數組,Enable Basic不允許這么做,在使用前必頇聲明。

循環提供了一種有效的處理數組的方法。例如:下例中For循環將數組所有元素初始化為5:

Static Counters (1 To 20) As Integer Dim I As Integer

For I = 1 To 20

Counter ( I ) = 5

Next I

多維數組

Cypress Enable 支持多維數組,例如下面范例在過程內聲明了一個二維數組: Static Mat(20, 20) As Double

可以明確聲明數組任意一維或者兩維的下邊界。

Static Mat(1 to 10, 1 to 10) As Double

可以使用For循環有效處理多維數組。在下列語句中,多維數組的元素被賦值。 Dim L As Integer, J As Integer

Static TestArray(1 To 10, 1 to 10) As Double

For L = 1 to 10

For J = 1 to 10

TestArray(L,J) = I * 10 + J

Next J

Next L

數組的維數可以多于兩維。Enable中數組的上邊界不能任意。

Dim ArrTest(5, 3, 2)

如果沒有在之前的代碼中使用語句Option Base 1,則該聲明創建的三維數組的大小為(6,4,3)。Option Base 1語句設置數組的下邊界為1,而不是默認的0。

腳本語言概述

函數和語句快速參考

30/78页

FOXBOT〄編程手冊

類型/函數/語句

控制流程

Goto, End, OnError, Stop, Do...Loop, Exit Loop, For...Next, Exit For, If..Then..Else...End If,

Stop, While...Wend, Select Case

轉換

Chr, Hex, Oct, Str, CDbl, CInt, Clng, CSng, CStr, CVar, CDate, Asc, Val, Date, Fix, Int, Day,

Weekday, Month, Year, Hour, Minute, Second

文件 I/O

FileCopy, Open, Close, Print #, Kill, FreeFile, LOF, FileLen, Seek, EOF, Write #, Input, Line Input,

Name, Put

數學

Exp, Log, Sqr, Rnd, Abs, Sgn, Atn, Cos, Sin, Tan, Int, Fix

過程

Function, End Function, Sub, End Sub, Exit, Global

字符串

Let, Len, InStr, Left, Mid, Asc, Chr, Right, LCase, Ucase, InStr, LTrim, RTrim, Trim, Option

Compare, Len, Space, String, StrComp

變量和常數

Dim, IsNull, IsNumeric,VarType, Const, IsDate, IsEmpty, IsNull, Option Explicit, Global, Static

錯誤處理

On Error, Resume

日期/時間

Date, Now, Time, Timer

數組

Option Base, Option Explicit, Static, Dim, Global, Lbound, Ubound, Erase, ReDim 其他

SendKeys, Rem

數據類型

變 量 類型說明 用 法

String $ Dim Str_Var As String

Integer % Dim Int_Var As Integer

31/78页

FOXBOT〄編程手冊

Long & Dim Long_Var As Long Single ! Dim Sing_Var As Single Double # Dim Dbl_Var As Double Variant Dim X As Any

Boolean Dim X As Boolean Byte Dim X As Byte

運算符

算朮運算符

運算符 功 能 用 法 ^ x = y^2 乘方

x = -2 , 負數

* x% = 2 * 3 乘法

/ x = 10/2 除法

Mod x = y Mod z 取余數

+ x = 2 + 3 加法

x = 6 - 4 , 減法

*算朮運算符遵從算朮優先級規則

'+' or '&'可用于字符串連接

運算符在表達式中的優先級

操作數 描 述 運算符運算順序

() 括號 最高

^ 乘冪

, 負號

/,* 除/乘

mod 求余

+, -, & 加減與

=, <>, <, >,<=,>= 關系

not 邏輯非

and 邏輯與

or 邏輯或

Xor 邏輯異或

Eqv 邏輯等

關系運算符

操作數 功 能 用 法

< X<Y 小于

<= X<=Y 小于等于

10 

32/78页

FOXBOT〄編程手冊

= X=Y 等于

>= X>=Y 大于等于

> X>Y 大于

<> X<>Y 不等于

邏輯運算符

操作數 功 能 用 法

Not If Not (x) 邏輯非

And If (x> y) And (x < Z) 邏輯與

Or if (x = y) Or (x = z) 邏輯或

函數,語句,保留字—快速參考

Abs, Access, Alias, And, Any

App, AppActivate, Asc, Atn, As

Base, Beep, Begin, Binary, ByVal

Call, Case, ChDir,错误~未找到引用源。 ChDrive, Choose, Chr, Const, Cos, CurDir, CDbl, CInt, CLng, CSng, CStr, CVar, CDate,Close, CreateObject Date, Day, Declare, Dim, Dir, Do...Loop,Dialog, DDEInitiate DDEExecute, DateSerial, DateValue, Double

Else, ElseIf, End, EndIf, EOF, Eqv, Erase, Err, Error Exit, Exp, Explicit

False, FileCopy, FileLen, Fix, For,

For...Next, Format, Function

Get, GetAttr, GoTo, Global, Get Object

Hex, Hour

If...Then...Else...[End If], Imp, Input, InputBox, InStr, Int, Integer, Is, IsEmpty, IsNull,

IsNumeric, IsDate

Kill

LBound, LCase, Left, Len, Let, LOF,Log, Long, Loop, LTrim Line Input

Mid,Minute, MkDir, Mod, Month, MsgBox

Name, Next, Not, Now

Oct,On, Open, OKButton,Object, Option, Optional, Or, On Error Print, Print #, Private, Put

Randomize, Rem, ReDim, RmDir, Rnd, Rtrim

11 

33/78页

FOXBOT〄編程手冊 Seek, SendKeys, Set, SetAttr, Second, Select, Shell, Sin, Sqr, Stop,Str, Sng,

Single, Space, Static, Step, Stop, Str, String, Sub, StringComp

Tan,Text, TextBox, Time, Timer, TimeSerial, TimeVale, Then, Type, Trim, True, To,

Type

UBound, UCase, Ucase, UntilVal, Variant, VarType Write #, While, Weekday, Wend, With

Xor

Year

語言參考A-Z

Abs函數

格式:Abs (數值)

功能:返回數值的絕對值。

說明:返回值的數據類型與參數相同,如果參數是字符串類型且能轉換成數字類型,則返回

值是Double類型。如果數字參數表達式結果是NULL,則Abs返回Null。

范例:

Sub Main

Dim Msg, X, Y

X = InputBox("Enter a Number:")

Y = Abs(X)

Msg = "The number you entered is " & X

Msg = Msg + ". The Absolute value of " & X & " is " & Y

MsgBox Msg 'Display Message.

End Sub

Asc函數

格式:Asc ( str)

功能:返回str字符串中第一個字符的ASCII值。

范例:

12 

34/78页

FOXBOT〄編程手冊 Sub Main()

Dim I, Msg ' Declare variables.

For I = Asc("A") To Asc("Z") ' From A through Z.

Msg = Msg & Chr(I) ' Create a string.

Next I

MsgBox Msg 'Display results.

End Sub

Atn函數

格式:Atn(rad)

功能:返回數字的反正切值。

說明:參數rad可以是任意的數字表達式,返回結果是用弧度表示的角度。

范例:

Sub AtnExample ()

Dim Msg, Pi ' Declare variables.

Pi = 4 * Atn(1) ' Calculate Pi.

Msg = "Pi is equal to " & Str(Pi)

MsgBox Msg ' Display results. End Sub

CBool 函數

格式:CBool (expression)

功能:將一個數據類型轉換成布爾型。Expression必頇是有效的字符串或數值表達式。 范例:

Sub Main

Dim A, B, Check

A = 5: B = 5

Check = CBool(A = B)

Print Check

A = 0

Check = CBool(A)

Print Check

End Sub

CDate 函數

格式:CDate (expression)

13 

35/78页

FOXBOT〄編程手冊 功能:將任何有效表達式轉換成日期類型變量。參數expression必頇是有效的字符串或數值日期表達式,可以表達從公元30年1月1日 到 公元9999年12月31日的日期時間。 范例:

Sub Main

Dim MyDate, MDate, MTime, MSTime

MybDate = "May,29,1959" ' Define date.

MDate = CDate(MybDate) ' Convert to Date data type.

MTime = "10:32:27 PM" ' Define time.

MSTime = CDate(MTime) ' Convert to Date data type.

Print MDate

Print MSTime

End Sub

CDbl 函數

格式:CDbl (expression)

功能:將數據從一個類型轉換成double。參數Expression必頇是有效的字符串或數值表達式。 范例:

Sub Main()

Dim y As Integer

y = 25555 'the integer expression only allows for 5 digits

If VarType(y) = 2 Then

Print y

x = CDbl(y) 'Converts the integer value of y to double value

x = x * 100000 'y is now 10 digits in the form of x '

Print x

End If

End Sub

Chr 函數

格式:Chr(num )

功能:返回只有一個字符的字符串,該字符的ASCII碼值為參數值num。

范例:

Sub ChrExample ()

Dim X, Y, Msg, NL

NL = Chr(10)

For X = 1 to 2

For Y = Asc("A") To Asc("Z")

Msg = Msg & Chr(Y)

Next Y

Msg = Msg & NL

Next X

MsgBox Msg

End Sub

14 

36/78页

FOXBOT〄編程手冊

CInt 函數

格式:CInt (expression)

功能:將任何有效的表達式值轉換成integer類型數據。

范例:

Sub Main()

Dim y As Long

y = 25

Print VarType(y)

If VarType(y) = 3 Then

Print y

x = CInt(y) 'Converts the long value of y to an integer value

Print x

Print VarType(x)

End If

End Sub

CLng函數

格式:CLng (expression)

功能:將任何有效的表達式值轉換為long型數據。

范例:

Sub Main()

Dim y As Integer

y = 25000 'the integer expression can only hold five digits

If VarType(y) = 2 Then

Print y

x = CLng(y) 'Converts the integer value of x to long value

x = x * 10000 'y is now ten digits in the form of x

Print x

End If

End Sub

Close 語句

格式:Close [[#filenumber] [, [#]filenumber],,, 說明:Close語句只有一個參數Filenumber,Filenumber是用Open語句打開文件時所使用的

15 

37/78页

FOXBOT〄編程手冊 一個整數。如果Close語句沒有參數,則關閉所有已經打開的文件。

范例:

Sub Main

Open "c:\test.txt" For Input As #1

Do While Not EOF(1)

MyStr = Input(10, #1)

MsgBox MyStr

Loop

Close #1

End Sub

Sub Make3Files ()

Dim I, FNum, FName ' Declare variables.

For I = 1 To 3

FNum = FreeFile ' Determine next file number.

FName = "TEST" & FNum

Open FName For Output As FNum ' Open file.

Print #I, "This is test #" & I ' Write string to file.

Print #I, "Here is another "; "line"; I

Next I

Close ' Close all files.

End Sub

Const 語句

格式:Const name = expression

功能:定義一個常量。

常量必頇在使用前定義。Cypress Enable中,在過程外或模塊級定義的常量是全局的。下面模塊級之外使用Global Const語法和使用,onst語法是一致的。

范例:

Global Const Height = 14.4357

Const PI = 3.14159 'Global to all procedures in a module

16 

38/78页

FOXBOT〄編程手冊 Sub Main ()

Radius = 10

CylArea = Height * (Radius * Radius) * PI

MsgBox "The volume of Cylinder x is " & CylArea

End Sub

Cos函數

格式:Cos (rad)

功能:返回角度的余弦值。

說明:Rad必頇用弧度表示且是一個有效的數值表達式。如果沒有指定返回值類型為single或者integer,Cos函數缺省返回doulbe類型值。

范例:

Sub Main()

Dim J As Double

Dim I As Single 'Declare variables.

Dim K As Integer

For I =1 To 10 '

Msg = Msg & Cos(I) & ", " 'Cos function call

J=Cos(I)

Print J

K=Cos(I)

Print K

Next I

MsgBox Msg 'Display results.

MsgBox Msg1

End Sub

CSng函數

格式:CSng (expression)

功能:將任何有效表達式轉換成single類型數據。

范例:

Dim y As Integer

y = 25

If VarType(y) = 2 Then

Print y

x = CSng(y) 'Converts the integer value of y to a single value

Print x

End If

CStr 函數

格式:CStr(expression)

功能:將任何有效表達式轉換為string類型數據。

17 

39/78页

FOXBOT〄編程手冊

范例:

Sub Main

Dim Y As Integer

Y = 25

Print Y

If VarType(Y) = 2 Then

X = CStr(Y) 'converts Y To a Str

X = X + "hello" 'It is to combine Y with strings

Print X

End If

End Sub

CVar 函數

格式:CVar (expression)

功能:將任何有效表達式值轉換為variant類型值。

范例:

Sub Main

Dim MyInt As Integer

MyInt = 4534

Print MyInt

MyVar = CVar(MyInt & "0.23") 'makes MyInt a Variant + 0.32

Print MyVar

End Sub

Date函數

格式:Date, Date()

功能:返回當前系統日期。

范例:

Sub Main

x = Date()

Print Date

Print x

Print “VarType: “ & VarType(Date)

MyTime = "08:04:23 PM"

MyDate = "03/03/95"

MyDate = "January,27,1993"

SysDate = Date

MsgBox Sysdate,0,"System Date"

MsgBox Now,0,"Now"

MsgBox MyTime,0,"MyTime"

MsgBox Second( MyTime ) & " Seconds"

MsgBox Minute( MyTime ) & " Minutes"

MsgBox Hour( MyTime ) & " Hours"

MsgBox Day( MyDate ) & " Days"

MsgBox Month( MyDate ) & " Months"

18 

40/78页

FOXBOT〄編程手冊

MsgBox Year( MyDate ) & " Years"

' Returns system time in the system-defined long time format.

MsgBox Format(Time, "Short Time") & " Short Time"

MsgBox Format(Time, "Long Time") & "Long Time"

' Returns system date in the system-defined long date format.

MsgBox Format(Date, "Short Date") & " Short Date"

MsgBox Format(Date, "Long Date") & " Long Date"

MyDate = "30,December,91" ' use of European date

print Mydate

MsgBox MyDate,0,"MyDate International..."

MsgBox Day(MyDate),0,"day"

MsgBox Month(MyDate),0,"month"

MsgBox Year(MyDate),0,"year"

MyDate = "30-Dec-91" ' another of European date usage

print Mydate

MsgBox MyDate,0,"MyDate International..."

MsgBox Day(MyDate),0,"day"

MsgBox Month(MyDate),0," month"

MsgBox Year(MyDate),0,"year"

MsgBox Format("This is it", ">") 'Returns "THIS IS IT".

End Sub

Day 函數

格式:Day(dateexpression)

功能:返回一個與傳入的dateexpression字符串相對應的variant類型日期數據。Dateexpression可以是字符串或者任何能代表日期的表達式。

相關主題:Month, Weekday, Hour, Second

范例:

Sub Main

Dim MDate, MDay

MDate = #May,29,1959#

MDay = Day(MDate)

Print "The Day listed is the " & MDay

End Sub

Dim 語句

格式:Dim 變量名[(下標)][As Type][,name][As Type]]

功能:聲明變量或者數組。目前支持的數據類型有:integer,long ,single,double,string

和variant。

范例:

Sub Main

Dim x As Long

Dim y As Integer

Dim z As single

19 

41/78页

FOXBOT〄編程手冊

Dim a As double

Dim s As String

Dim v As Variant ' This is the same as Dim x or Dim x as any

End Sub

Do...Loop語句

格式:

Do [{While|Until}條件]

[語句塊]

[Exit Do]

[語句塊]

Loop

Do

[語句塊]

[Exit Do]

[語句塊]

Loop [{While|Until} 條件]

功能:當條件為真或者滿足時重復執行一組語句。

相關主題:While, Wend

范例:

Sub Main ()

Dim Value, Msg 'Declare variables.

Do

Value = InputBox("Enter a value from 5 to 10.")

If Value >= 5 And Value <= 10 Then

Exit Do 'Exit Do...Loop.

Else

Beep 'Beep if not in range.

End If

Loop

End Sub

End語句

格式:End[{Function | If | Sub}]

功能:結束一個諸如子程序或函數的程序段或語句塊。

20 

42/78页

FOXBOT〄編程手冊 相關主題: Exit, Function, If...Then...Else, Select Case, Stop

范例:

Sub Main()

Dim Var1 as String

Var1 = "hello"

MsgBox " Calling Test"

Test Var1

MsgBox Var1

End Sub

Sub Test(wvar1 as string)

wvar1 = "goodbye"

MsgBox "Use of End Statement"

End

End Sub

EOF函數

格式:EOF(Filenumber)

功能:在讀取文件時返回一個數值指示是否到達文件末尾。

相關主題:Open語句

范例:

Sub Main

Open "TESTFILE" For Input As #1 ' Open file.

Do While Not EOF(1) ' Loop until end of file.

MyStr = Input(10, #1) ' Get ten characters.

MsgBox MyStr

Loop

Close #1 ' Close file.

End Sub

Exit語句

格式:Exit {Do | For | Function | Sub }

功能:退出循環或過程。

相關主題:End 和Stop語句

范例:

Sub Main ()

Dim Value, Msg 'Declare variables.

Do

Value = InputBox("Enter a value from 5 to 10.")

If Value >= 5 And Value <= 10 Then 'Check range.

Exit Do 'Exit Do...Loop.

Else

Beep 'Beep make some noise.

End If

21 

43/78页

FOXBOT〄編程手冊

Loop

End Sub

Exp函數

格式:Exp(num)

功能:返回以自然對數e為底的指數函數值,常量e的近似值是2.71828。

相關主題:Log

范例:

Sub ExpExample ()

'Exp(x) is e ^x so Exp(1) is e ^1 or e.

Dim Msg, ValueOfE 'Declare variables.

ValueOfE = Exp(1) 'Calculate value of e.

Msg = "The value of e is " & ValueOfE

MsgBox Msg 'Display message.

End Sub

FileCopy函數

格式:FileCopy(sourcefile, destinationfile)

功能:從源文件復制文件到目的文件。參數sourcefile, destinationfile必頇是有效的字符串表達式。Sourcefile是被拷貝的文件名, destinationfile是拷貝的文件名。

范例:

Dim SourceFile, DestinationFile

SourceFile = "SRCFILE" ' Define source file name.

DestinationFile = "DESTFILE" ' Define target file name.

FileCopy SourceFile, DestinationFile ' Copy source to target.

FileLen函數

格式:FileLen(filename)

功能:返回以字節表示的文件長度,返回值類型是long integer類型。

相關主題:LOF函數

范例:

Sub Main

Dim MySize

MySize = FileLen("C:\TESTFILE") 'Returns file length (bytes).

Print MySize

End Sub

Fix函數

格式:Fix(數字)

功能:返回一個數的整數部分。

22 

44/78页

FOXBOT〄編程手冊

相關主題:Int

范例:

Sub Main

Dim MySize

MySize = Fix(4.345)

Print MySize

End Sub

For each … Next語句

格式:

For Each element in group

[語句塊]

[Exit For]

[語句塊]

Next [element]

功能:對于在某個集合中的每一個數組元素重復執行一組語句。如果每個循環元素都是唯一

的For each … Next可以嵌套使用。For Each….Next語句不能使用用戶自定義類型的數組。

范例:

Sub Main

dim z(1 to 4) as double

z(1) = 1.11

z(2) = 2.22

For Each v In z

Print v

Next v

End Sub

For...Next語句

格式:

For 計數器= <表達式1> to <表達式2> [step 增量]

[語句組]

Next [計數]

功能:以指定的次數循環執行一個語句塊。 范例:

Sub main ()

Dim x,y,z

For x = 1 to 5

For y = 1 to 5

For z = 1 to 5

23 

45/78页

FOXBOT〄編程手冊

Print "Looping" ,z,y,x

Next z

Next y

Next x

End Sub

FreeFile函數

格式:FreeFile

功能:返回一個整數值,代表下一個可使用于Open語句的文件句柄。 相關主題:Open, Close, Write

范例:

Sub Main

Dim Mx, FileNumber

For Mx = 1 To 3

FileNumber = FreeFile

Open "c:\e1\TEST" & Mx For Output As #FileNumber

Write #FileNumber, "This is a sample."

Close #FileNumber

Next Mx

Open "c:\e1\test1" For Input As #1

Do While Not EOF(1)

MyStr = Input(10, #1)

MsgBox MyStr

Loop

Close #1

End Sub

Function 語句

格式:

Function 函數 [(參數)] [As 類型][語句]

[語句塊]

函數名 = 表達式

[語句塊]

函數名=表達式

End Function

聲明和定義一個過程,該過程接收參數并返回一個指定數據類型的值。當需要傳遞可選

24 

46/78页

FOXBOT〄編程手冊

參數列表時,格式如下:

Sub([ByVal] 變量 [As 類型] [,ByVal] 變量 [As type] )…))

其中可選參數ByVal指明按值傳遞方式而不是按引用傳遞(參看手冊ByRef 和ByVal:。可選參數As type用來指明數據類型。有效的類型有String, Integer, Double, Long, 和 Varaint。

相關主題:Dim, End, Exit, Sub

范例:

Sub Main

Dim I as integer

For I = 1 to 10

Print GetColor2(I)

Next I

End Sub

Function GetColor2( c% ) As Long

GetColor2 = c% * 25

If c% > 2 Then

GetColor2 = 255 ' 0x0000FF – 紅

End If

If c% > 5 Then

GetColor2 = 65280 ' 0x00FF00 – Green

End If

If c% > 8 Then

GetColor2 = 16711680 ' 0xFF0000 – Blue

End If

End Function

Global語句

格式:Global Const 常量。Global語句必頇位于過程代碼之外。全局變量可在程序的所有函數和子程序中使用。

相關主題:Dim, Const和Type語句

范例:

Global Const Height = 14.4357

Const PI = 3.14159

Sub Main ()

Radius=10

CylArea = Height * (Radius * Radius) * PI

25 

47/78页

FOXBOT〄編程手冊

MsgBox "The volume of Cylinder x is " & CylArea

End Sub

GoTo 語句

格式:GoTo label

功能:無條件轉移到過程指定的標號,其無頇返回。

范例:

Sub main ()

Dim x,y,z

For x = 1 to 5

For y = 1 to 5

For z = 1 to 5

Print "Looping" ,z,y,x

If y > 3 Then

GoTo Label1

End If

Next z

Next y

Next x

Label1:

End Sub

Hour函數

格式:Hour(string )

此函數返回0~23之間的整數,對應于參數string 指定的日期時間中的小時數。參

數String是以字符串形式描述的代表日期和時間的數字,可描述從 1980年1月1日 到

9999年12月31日的日期時間。可參考Format函數中的范例。 If...Then...Else語句

語法1:

If 條件 Then thenpart [Else elsepart]

格式2:

If 條件Then

[語句塊]

ElseIf 條件Then

26 

48/78页

FOXBOT〄編程手冊

[語句塊]

Else

[語句塊]

End If

語法2

If 條件Then 語句

相關主題:Select Case

范例:

Sub IfTest

' demo If...Then...Else

Dim msg as String

Dim nl as String

Dim someInt as Integer

nl = Chr(10)

msg = "Less"

someInt = 4

If 5 > someInt Then msg = "Greater" : Beep

MsgBox “” & msg

If 3 > someInt Then

msg = "Greater"

Beep

Else

msg = "Less"

End If

MsgBox “” & msg

If someInt = 1 Then

msg = "Spring"

ElseIf someInt = 2 Then

msg = "Summer"

ElseIf someInt = 3 Then

msg = "Fall"

ElseIf someInt = 4 Then

msg = "Winter"

Else

msg = "Salt"

End If

MsgBox “” & msg

End Sub

Input #語句

格式:Input # filenumber, variablelist

功能:從順序文件中讀取數據并賦值給變量。

此命令有兩類參數:filenumber, variablelist 。filenumber是Open語句中打開文件時用于標識

文件的數字;variablelist是指用逗號分開參數列表,用于接收從文件讀取的數據。

27 

49/78页

FOXBOT〄編程手冊

范例:

Dim MyString, MyNumber

Open "c:\TESTFILE" For Input As #1 ' 打開文件用來輸入 Do While Not EOF(1) ' 循環到文件結束

Input #1, MyString, MyNumber '讀入數據到兩個變量 Loop

Close #1 ' 關閉文件

Input 函數

格式:Input(n , [ #] filenumber )

功能:從順序文件中讀取字符。

此函數有兩個參數:n和filenumber。 N指明從順序文件讀取的字節數;filenumber是

Open語句中打開文件時用于標識文件的數字。

范例:

Sub Main

Open "TESTFILE" For Input As #1 ' 打開文件

Do While Not EOF(1) ' 循環至文件結束.

MyStr = Input(10, #1) ' 讀入十個字母.

MsgBox MyStr

Loop

Close #1 ' 關閉文件.

End Sub

InStr函數

格式:InStr(numbegin, string1, string2)

該函數返回字符串string2第一次在字符串string1中出現的位置。參數Numbegin是必頇

的,用來設置在string1中搜索的起始位置,Numbegin必頇是小于65,535的正整數。參數string1

是被檢索的字符串,參數string2是要尋找的字符串。

相關主題:Mid函數

范例:

Sub Main ()

B$ = "Good Bye"

A% = InStr(2, B$, "Bye")

C% = Instr(3, B$, "Bye")

End Sub

28 

50/78页

FOXBOT〄編程手冊

Int函數

格式:Int(number )

功能:取整函數,返回參數number的整數部分。

相關主題: Fix

IsArray函數

格式:IsArray(variablename )

功能:判斷參數variablename是否是一個數組,返回值為boolean類型。

相關主題: IsEmpty, IsNumeric, VarType, IsObject 范例:

Sub Main

Dim MArray(1 To 5) As Integer, MCheck

MCheck = IsArray(MArray)

Print MCheck

End Sub

IsDate函數

格式:IsDate(variant )

功能:判斷variant類型參數是否可以轉換成日期類型。

相關主題: IsEmpty, IsNumeric, VarType

范例:

Sub Main

Dim x As String

Dim MArray As Integer, MCheck

MArray = 345

x = "January,1,1987"

MCheck = IsDate(MArray)

MChekk = IsDate(x)

MArray1 = CStr(MArray)

MCheck1 = CStr(MCheck)

Print MArray1 & " is a date " & Chr(10) & MCheck

Print x & " is a date" & Chr(10) & MChekk End Sub

29 

51/78页

FOXBOT〄編程手冊 函數 IsEmpty

格式:IsEmpty(variant )

功能:判斷variant類型參數是否已被初始化。

相關主題: IsDate, IsNull, IsNumeric, VarType 范例:

Sub Main

Dim x ' Empty

x = 5 ' Not Empty - Long

x = Empty ' Empty

y = x ' Both Empty

MsgBox “x” & " IsEmpty: " & IsEmpty(x)

End Sub

IsNull函數

格式:IsNull (v )

功能:判斷variant類型參數v是否為NULL。

NULL是一個特殊值,它表示參數v說明:若v為Null,則返回TURE,否則返回FALSE。

不含有任何數據。這不同于零長度的空字符串。

相關主題:IsDate, IsEmpty, IsNumeric, VarType IsNumeric函數

格式:IsNumeric(v)

功能:判斷參數v是否可以轉換成數值類型數據。

說明:參數v可以是任意的variant類型,數值,日期或字符串型(如果字符串是由數字組成的)。 相關主題:IsDate, IsEmpty, IsNull, VarType 范例:

Sub Form_Click ()

Dim TestVar ' Declare variable.

TestVar = InputBox("Please enter a number, letter, or symbol.")

If IsNumeric(TestVar) Then ' Evaluate variable.

MsgBox "Entered data is numeric." „ Message if number.

Else

MsgBox "Entered data is not numeric." ' Message if not.

End If

End Sub

30 

52/78页

FOXBOT〄編程手冊

Kill語句

格式:Kill filename

功能:刪除參數filename指定的文件。如果要刪除一個目錄則使用RmDir語句。

范例:

Const NumberOfFiles = 3

Sub Main ()

Dim Msg ' Declare variable.

MakeFiles() ' Create data files.

Msg = "Several test files have been created. You may see "

Msg = Msg & "them by switching tasks. Choose OK to remove them."

MsgBox Msg

For I = 1 To NumberOfFiles

Kill "TEST" & I ' Remove data files from disk.

Next I

End Sub

Sub MakeFiles ()

Dim I, FNum, FName ' Declare variables.

For I = 1 To NumberOfFiles

FNum = FreeFile ' Determine next file number.

FName = "TEST" & I

Open FName For Output As FNum ' Open file.

Print #FNum, "This is test #" & I ' Write string to file.

Print #FNum, "Here is another "; "line"; I

Next I

Close ' Close all files.

End Sub

LBound函數

格式:LBound(array [,dimension] )

功能:返回指定數組中特定維數的最小可用下標值。

相關主題:UBound函數

范例:

Option Base 1

Sub Main

31 

53/78页

FOXBOT〄編程手冊

Dim a(10) As Double

MsgBox "LBound: " & LBound(a) & " UBound: " & UBound(a)

Dim i As Integer

For i = 0 to 3

a(i) = 2 + i * 3.1

Next i

Print a(0),a(1),a(2), a(3)

End Sub

Lcase函數

格式:Lcase[$](string )

功能:把字符串參數string中的所有字母都轉換成小寫字母。

相關主題:Ucase函數

范例:

Sub Main

MyString = " <-Trim-> " ' Initialize string.

TrimString = LTrim(MyString) ' TrimString = "<-Trim-> ".

MsgBox "|" & TrimString & "|"

TrimString = LCase(RTrim(MyString)) ' TrimString = " <-trim->".

MsgBox "|" & TrimString & "|"

TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->".

MsgBox "|" & TrimString & "|"

' Using the Trim function alone achieves the same result.

TrimString = UCase(Trim(MyString)) ' TrimString = "<-TRIM->".

MsgBox "|" & TrimString & "|"

End Sub

Left函數

格式:Left(string, num)

功能:返回字符串參數string中最左邊的num個字符,返回值為Variant類型。Left$函數的返

回值為字符串類型。

范例:

Sub Main ()

Dim LWord, Msg, RWord, SpcPos, UsrInp ' Declare variables.

Msg = "Enter two words separated by a space."

UsrInp = InputBox(Msg) ' Get user input.

print UsrInp

SpcPos = InStr(1, UsrInp, " ") ' Find space.

If SpcPos Then

LWord = Left(UsrInp, SpcPos - 1) ' Get left word.

print "LWord: "; LWord

RWord = Right(UsrInp, Len(UsrInp) - SpcPos) ' Get right word.

Msg = "The first word you entered is " & LWord

Msg = Msg & "." & " The second word is "

32 

54/78页

FOXBOT〄編程手冊

Msg = "The first word you entered is <" & LWord & ">"

Msg = Msg & RWord & "."

Else

Msg = "You didn't enter two words."

End If

MsgBox Msg ' Display message.

MidTest = Mid("Mid Word Test", 4, 5)

Print MidTest

End Sub

Len函數

格式:Len(string)

功能:返回字符串參數string中字符的個數。

相關主題:InStr

范例:

Sub Main ()

A$ = "Cypress Enable"

StrLen% = Len(A$) 'the value of StrLen is 14

MsgBox StrLen%

End Sub

Let 語句

格式:[Let] variablename = expression

功能:賦值語句,把表達式的賦給變量。Let 關鍵詞是可選的,一般很少使用。 范例:

Sub Form_Click()

Dim Msg, Pi ' Declare variables.

Let Pi = 4 * Atn(1) ' Calculate Pi.

Msg = "Pi is equal to " & Str(Pi)

MsgBox Msg ' Display results. End Sub

33 

55/78页

FOXBOT〄編程手冊

Line Input #語句

格式:Line Input # filenumber,name

功能:從順序文件中讀入一行到一個string或者variant類型變量中。

參數filenumber是Open語句中打開文件時用于標識文件的數字;參數name是用于保存從文件中讀入的文本的變量名。

相關主題:Open

范例:

Sub Main

Open "TESTFILE" For Input As #1 ' Open file.

Do While Not EOF(1) ' Loop until end of file.

Line Input #1, TextLine ' Read line into variable.

Print TextLine ' Print to Debug window.

Loop

Close #1 ' Close file.

End Sub

LOF函數

格式:LOF(filenumber)

功能:返回打開文件的以字節為單位的大小,參數filenumber是必需的。 相關主題:FileLen

范例

Sub Main

Dim FileLength

Open "TESTFILE" For Input As #1

FileLength = LOF(1)

Print FileLength

Close #1

End Sub

Log函數

格式:Log(num)

功能:返回參數num的自然對數,參數num必頇是大于零的實數。

相關主題:Exp, Sin, Cos

范例:

Sub Form_Click()

Dim I, Msg, NL

NL = Chr(13) & Chr(10)

Msg = Exp(1) & NL

For I = 1 to 3

34 

56/78页

FOXBOT〄編程手冊

Msg = Msg & Log(Exp(1) ^ I ) & NL

Next I

MsgBox Msg

End Sub

函數Mid

格式:string = Mid(strgvar,begin,length)

功能:返回字符串strgvar從begin開始的長度為length的子串。

范例:

Sub Main ()

Dim LWord, Msg, RWord, SpcPos, UsrInp ' Declare variables.

Msg = "Enter two words separated by a space."

UsrInp = InputBox(Msg) ' Get user input.

SpcPos = InStr(1, UsrInp, " ") ' Find space.

If SpcPos Then

LWord = Left(UsrInp, SpcPos - 1) ' Get left word.

print "LWord: "; LWord

RWord = Right(UsrInp, Len(UsrInp) - SpcPos) ' Get right word.

Msg = "The first word you entered is " & LWord

Msg = Msg & "." & " The second word is "

Msg = "The first word you entered is <" & LWord & ">"

Msg = Msg & RWord & "."

Else

Msg = "You didn't enter two words."

End If

MsgBox Msg ' Display message.

MidTest = Mid("Mid Word Test", 4, 5)

Print MidTest

End Sub

Minute函數

格式:Minute(string)

功能:返回串參數string指定的時間中的分鐘部分,必頇為0~59之間的整數

35 

57/78页

FOXBOT〄編程手冊

Month函數

格式:Month(number)

功能:返回1~12之間的整數,參數numbe是描述日期時間的字符串。 相關主題:Day, Hour, Weekday, Year 范例:

Sub Main

MyDate = "03/03/96"

print MyDate

x = Month(MyDate)

print x

End Sub

Name語句

格式:Name oldname As newname

功能:從新命名一個目錄或文件名。

參數oldname,newname是代表新舊名稱的字符串,可以包含路徑。 相關主題:Kill

Now函數

格式:Now

功能:返回系統當前日期和時間。

函數返回值是以double存儲的包含日期和時間的variant類型數據。該數據可表示100年

1月1日到9999年12月31日之間的日期和時間。數據的整數部分代表日期,小數部分代表

時間。

范例:

Sub Main ()

Dim Today

Today = Now

End Sub

On Error語句

格式:On Error { GoTo line | Resume Next | GoTo 0 }

功能:使能錯誤處理路徑并指定錯誤處理路徑的語句標號。參數line指語句標號,語句標號

必頇存在,否則將產生錯誤。

范例:

Sub Main

36 

58/78页

FOXBOT〄編程手冊

On Error GoTo dude

Dim x as object

x.draw ' Object not set

jpe ' Undefined function call

print 1/0 ' Division by zero

Err.Raise 6 ' Generate an "Overflow" error

MsgBox "Back"

MsgBox "Jack"

Exit Sub

dude:

MsgBox "HELLO"

Print Err.Number, Err.Description

Resume Next

MsgBox "Should not get here!"

MsgBox "What?"

End Sub

生成錯誤的語法為:Err.Raise x

Open語句

格式:Open filename$ [For mode] [Access access] As [#]filenumber

功能:打開文件進行輸入輸出操作。

在對文件進行任何I/O操作之前必頇打開該文件。OPEN語句參數有: :要打開filename的文件名字或路徑;mode:指定文件打開模式的保留字,打開模式有Append, Binary, Input,

Output。如果filename對應的文件不存在,以Append, Binary 或Output模式打開文件可以創建該文件;access:指定在打開文件上所允許執行的訪問操作的保留字,訪問操作有Read, Write;filenumber:處于1~255之間的整數,用于標識打開的文件,只要文件處于打開狀態,該數字一直和文件相關聯,其他文件I/O操作可以使用該數字與相應的文件進行交互。文件打開模式參數可以是下列模式保留字中的一種。

Input: 順序輸入模式 ;

Output: 順序輸出模式 ;

Append:添加模式,此模式會把文件指針設置到文件最后位置,可用Print # 或 Write #語句

擴展文件;

Binary:二進制模式。

參數mode是指定可以在已打開的文件上執行哪種操作的保留字。如果文件已經被另一個過程打開并且指定的訪問類型不被允許,Open操作失敗并產生一個訪問被拒絕的錯誤。 參數access可以是下列訪問模式保留字中的一種:

Read:以只讀方式打開文件;

37 

59/78页

FOXBOT〄編程手冊

Write:以只寫模式打開文件;

Read Write:以讀寫模式打開文件,此模式只對隨機訪問文件和二進制文件有效,并且文件必

頇以append模式打開。

以下范例把數據寫入測試文件,然后再讀出。

Sub Main ()

Open "TESTFILE" For Output As #1 ' Open to write file.

userData1$ = InputBox("Enter your own text here")

userData2$ = InputBox("Enter more of your own text here")

Write #1, "This is a test of the Write # statement."

Write #1,userData1$, userData2

Close #1

Open "TESTFILE" for Input As #2 ' Open to read file.

Do While Not EOF(2)

Line Input #2, FileData ' Read a line of data.

PRint FileData ' Construct message.

Loop

Close #2 ' Close all open files.

MsgBox "Testing Print Statement" ' Display message.

Kill "TESTFILE" ' Remove file from disk.

End Sub

Option Base語句

格式:Option Base number

功能:聲明數組下標的缺省下邊界。

Option Base語句不是必頇的。如果需要使用該語句,則在同一模塊中只能使用一次,且

必頇位于聲明部分并在定義數組之前使用。參數number的值必頇是0或1,缺省下標下邊界

是0。使用to子句可以在dim,global和static語句中指定數組的上下邊界,這樣會更靈活。

當然如果不使用to子句明確指定下界也可以使用Option Base語句把所有數組缺省下邊界設

置為1。

相關主題:Dim, Global和Lbound語句

范例:

Option Base 1 ' Module level statement.

Sub Main

Dim A(), Msg, NL ' Declare variables.

NL = Chr(10) ' Define newline.

ReDim A(20) ' Create an array.

Msg = "The lower bound of the A array is " & LBound(A) & "."

Msg = Msg & NL & "The upper bound is " & UBound(A) & "."

MsgBox Msg ' Display message.

End Sub

Option Explicit語句

38 

60/78页

FOXBOT〄編程手冊 格式:Option Explicit

功能:強制顯式聲明變量。該語句在程序聲明部分使用。該語句可以包含在聲明文件中,或者位于所有的文件之外。如果該語句出現在文件的中間部分,則對編譯緩沖區的其余部分起作用。

相關主題:Const和Global語句

范例:

Option Explicit

Sub Main

Print y „because y is not explicitly dimmed an error will occur. End Sub

Print方法

格式:Print [expr, expr...]

功能:輸出字符串到一個對象。

范例:

Sub PrintExample ()

Dim Msg, Pi ' 聲明變量

Let Pi = 4 * _Atn(1) ' 計算 Pi.

Msg = "Pi is equal to " & Str(Pi)

MsgBox Msg ' 顯示結果

Print Pi 在信息編輯窗口輸出結果

End Sub

Print # 語句

格式:Print # filenumber, [ [{Spc(n) | Tab(n)}][ expressionlist] [{; | ,}] ] 功能:向一個順序文件寫數據。

Print語句描述:

filenumber:在打開順序文件時使用在Open語句里數字,用于標識文件。Filenumber之前的符號#的是必需的。

Spc(n):可選函數,用于在打印輸出時插入n個空格,允許多次使用;

39 

61/78页

FOXBOT〄編程手冊 Tab(n):可選函數,用于在打印輸出時定位到第n列,允許多次使用;

Expressionlist:可以寫入文件的數值和/或字符串的表達式;

{;|,}:確定下一個字符輸出位置的字符。分號“;”指示緊接最后一個字符輸出下一個字符;逗號指示在下一個輸出區域的起始處輸出下一個字符。每隔14列是一個輸出區域。如果沒有兩個字符都沒有指定,則下一個字符在下一行輸出。

如果省略Expressionlist,Print #語句在文件里輸出一個空白行,逗號不能省略,因為Print #將數據映象寫入到文件中,必頇分割數據以保証正確輸出。如果用逗號作為分割符,Print #在文件的輸出區域將以空格代替。

Print # 語句variant類型數據寫入文件的方式與寫入任何其他數據類型一樣。但也有一些例外:如果variant變量的實際值為空,則Print #不會向文件中寫入任何數據項;如果variant變量的實際值為Null,則Print #將向文件中寫入#NULL#;如果variant變量的實際值為日期類型,則Print #將向中寫入在WIN.INI文件中定義的簡短日期格式的日期,如果日期或時間部分丟失或為零,則Print #僅將提供的部分寫入文件。

下面是一個將文件寫入測試文件的范例:

范例:

Sub Main

Dim I, FNum, FName ' 聲明變量.

For I = 1 To 3

FNum = FreeFile ' 定義下一個文件號碼.

FName = "TEST" & FNum

Open FName For Output As FNum ' 打開文件.

Print #I, "This is test #" & I ' 將字符串寫入文件.

Print #I, "Here is another "; "line"; I

Next I

Close ' 關閉所有文件.

End Sub

下面的范例是將數據寫入測試文件并讀取:

Sub Main ()

Dim FileData, Msg, NL ' 聲明變量.

NL = Chr(10) ' 定義換行.

Open "TESTFILE" For Output As #1 ' 打開寫入文件.

Print #2, " This is a test of the Print # statement."

Print #2, ' 輸出空格線到文件.

Print #2, "Zone 1", "Zone 2" ' 在兩個輸出區域之間輸出.

Print #2, "With no space between" ; "." ' 兩個字符串一起輸出.

Close

Open "TESTFILE" for Input As #2 ' 打開并讀出文件.

Do While Not EOF(2)

40 

62/78页

FOXBOT〄編程手冊

Line Input #2, FileData ' 讀出一行數據.

Msg = Msg & FileData & NL ' 創建信息.

MsgBox Msg

Loop

Close ' 關閉所有文件.

MsgBox "Testing Print Statement" ' 顯示信息.

Kill "TESTFILE" ' 將文件從盤中移出.

End Sub

Randomize語句

格式:Randomize [number]

功能:初始化隨機數發生器。

說明:Randomize語句有一個可選參數number,該參數可以是任何有效的數字,用來初始化

隨機數發生器。如果省略該參數,則使用Timer函數的返回值作為缺省的隨機數發生器的種

子。

范例:

Sub Main

Dim MValue

Randomize ' 初試化隨機數值發生器.

MValue = Int((6 * Rnd) + 1)

Print MValue

End Sub

ReDim 語句

格式:ReDim varname(subscripts)[As Type][,varname(subscripts)] 功能:聲明動態數組并重新分配存儲空間。

ReDim語句用于確定或重新確定已經用帶空括號聲明的動態數組的尺寸。可以使用

ReDim語句反復地改變一個數組中元素的個數,但不要改變數組的維數或者元素的類型.

范例:

Sub Main

Dim TestArray() As Integer

Dim I

ReDim TestArray(10)

For I = 1 To 10

TestArray(I) = I + 10

Print TestArray(I)

Next I

End Sub

Rem語句

格式:Rem remark „remark

41 

63/78页

FOXBOT〄編程手冊 功能:在程序中的添加注釋。參數remark 是添加在代碼里的說明性注釋。

范例:

Rem This is a remark

Sub Main()

Dim Answer, Msg ' 聲明變量.

Do

Answer = InputBox("Enter a value from 1 to 3.")

Answer = 2

If Answer >= 1 And Answer <= 3 Then ' 檢查范圍.

Exit Do ' 退出循環.

Else

Beep ' 如果不在范圍發出警告音.

End If

Loop

MsgBox "You entered a value in the proper range."

End Sub

Right 函數

格式:Right (stringexpression, n )

功能:返回字符串stringexpression最右邊n個字符。

說明:參數 n 是將返回的字符數目,必頇是long integer類型數據。

相關主題:Len, Left, Mid函數.

范例:

' 這個范例用正確的函數將用戶輸入的兩個字符中的第一個返回

Sub Main ()

Dim LWord, Msg, RWord, SpcPos, UsrInp ' 聲明變量.

Msg = "Enter two words separated by a space."

UsrInp = InputBox(Msg) ' 用戶輸入.

print UsrInp

SpcPos = InStr(1, UsrInp, " ") ' 尋找位置.

If SpcPos Then

LWord = Left(UsrInp, SpcPos - 1) ' 得到左邊字符.

print "LWord: "; LWord

RWord = Right(UsrInp, Len(UsrInp) - SpcPos) ' 得到右邊字符.

Msg = "The first word you entered is " & LWord

Msg = Msg & "." & " The second word is "

Msg = "The first word you entered is <" & LWord & ">"

Msg = Msg & RWord & "."

Else

Msg = "You didn't enter two words."

End If

MsgBox Msg ' 顯示信息.

End Sub

42 

64/78页

FOXBOT〄編程手冊 Rnd函數

格式:Rnd (number)

功能:生成一個隨機數。

說明:參數 number必頇是有效的數值表達式。

范例:

'這個范例用Rnd 函數用1-6之間隨機發生的數字來模仿兩個滾動的骰子.每次程序都運行 Sub Main ()

Dim Dice1, Dice2, Msg ' 聲明變量.

Dice1 = CInt(6 * Rnd() + 1) ' 產生第一個骰子數值.

Dice2 = CInt(6 * Rnd() + 1) '產生第二個骰子數值.

Msg = "You rolled a " & Dice1

Msg = Msg & " and a " & Dice2

Msg = Msg & " for a total of "

Msg = Msg & Str(Dice1 + Dice2) & "."

MsgBox Msg ' 顯示信息.

End Sub

Second函數

格式:Second (number)

功能:返回參數number表示的時間中的秒數。

說明:參數number必頇是一個有效的數值表達式。

相關主題:Day, Hour, Minute, Now

范例:

' 格式函數范例

' 這個范例展示了格式函數在定義命名和用戶定義格式的數值的不同用法

' 數據用分隔符 (/),

' 時間用分隔符(:),AM/ PM 字面上、實際上的版本輸出顯示依靠于本地代碼運行設置的系統 '如果時間和日期在變化的外部環境中顯示,則在現場代碼中采用短的時間和短的日期格式 '如果被運行代碼顯示,采用不同于現場代碼的短時間和短日期格式.

' 我的時間和我的日期顯示在變化的環境中,用當前短時間和短日期的系統設置 Sub Main

MyTime = "08:04:23 PM"

MyDate = "03/03/95"

MyDate = "January 27, 1993"

MsgBox Now

MsgBox MyTime

MsgBox Second( MyTime ) & " Seconds"

MsgBox Minute( MyTime ) & " Minutes"

MsgBox Hour( MyTime ) & " Hours"

MsgBox Day( MyDate ) & " Days"

MsgBox Month( MyDate ) & " Months"

43 

65/78页

FOXBOT〄編程手冊

MsgBox Year( MyDate ) & " Years"

' 返回當前系統時間.

MsgBox Format(Time, "Short Time")

MyStr = Format(Time, "Long Time")

' Returns system date in the system-defined long date format.

MsgBox Format(Date, "Short Date")

MsgBox Format(Date, "Long Date")

'這部分不被支持

MsgBox Format(MyTime, "h:n:s") ' 返回 "17:4:23".

MsgBox Format(MyTime, "hh:nn:ss")' 返回 "05:04:23".

MsgBox Format(MyDate, "dddd, mmm d yyyy")

'如果格式不被支持,返回一個字符串

MsgBox Format(23) ' 返回 "23".

' 用戶定義格式.

MsgBox Format(5459.4, "##,##0.00") ' 返回 "5,459.40".

MsgBox Format(334.9, "###0.00") ' 返回 "334.90".

MsgBox Format(5, "0.00%") ' 返回 "500.00%".

MsgBox Format("HELLO", "<") ' 返回 "hello".

MsgBox Format("This is it", ">") ' 返回 "THIS IS IT". End Sub

Seek 函數

格式:Seek (filenumber)

說明:參數 filenumber是使用在Open語句的參數且必頇是一個有效的數值表達式。Seek返回下一個操作將要發生的以字節數表示的位置。文件中第一個字節是位置1。

相關主題:Open

范例:

Sub Main

Open "TESTFILE" For Input As #1 ' 打開要讀的文件.

For i = 1 To 24 Step 3 ' 循環直到文件結束.

Seek #1, i ' 尋找字節位置

MyChar = Input(1, #1) ' 讀下一個數據特征.

Print MyChar '輸出數據特征

Next i

Close #1 ' 關閉文件.

End Sub

Seek 語句

格式:Seek filenumber, position

說明:參數 filenumber是使用在Open語句的參數且必頇是一個有效的數值表達式。參數position指出下一個讀或寫將要發生的位置。Cypress Enable位置是相對于文件開頭字節位

44 

66/78页

FOXBOT〄編程手冊 置。Seek語句設定文件中下一個讀或寫操作發生的位置。

相關主題:Open

范例:

Sub Main

Open "TESTFILE" For Input As #1 ' Open file for reading.

For i = 1 To 24 Step 3 ' Loop until end of file.

Seek #1, i ' Seek to byte position

MyChar = Input(1, #1) ' Read next character of data.

Print MyChar 'Print character of data

Next i

Close #1 ' Close file.

End Sub

Select Case 語句

根據表達式的測試值執行多個語句組中符合測試條件的語句。

格式1:

Select Case testvar

Case var1

語句塊

Case var2

語句塊

Case Else

語句塊

End Select

格式2:

Select Case Number ' Evaluate Number.

Case 1 To 5 ' 包含數字1-5.

' The following is the only Case clause that evaluates to True.

Case 6, 7, 8 ' 6-8之間的數字.

Case 9 To 10 ' 數字 9 或10.

Case Else '其它數值.

End Select

相關主題:If...Then...Else

范例:

' This test shows nested select statements and if uncommented,

' the exit for statement

Sub Test ()

For x = 1 to 5

print x

Select Case x

Case 2

45 

67/78页

FOXBOT〄編程手冊

Print "Outer Case Two"

Case 3

Print "Outer Case Three"

Exit For

Select Case x

Case 2

Print "Inner Case Two"

Case 3

Print "Inner Case Three"

Exit For

Case Else ' Must be something else.

Print "Inner Case Else:", x

End Select

Print "Done with Inner Select Case"

Case Else ' Must be something else.

Print "Outer Case Else:",x

End Select

Next x

Print "Done with For Loop"

End Sub

SendKeys函數

格式:SendKeys (Keys, [wait])

功能:向活動窗口發送一個或多個擊鍵,就象直接在鍵盤上輸入一樣。SendKeys語句有兩個參數:第一個參數keys是發送到活動窗口的字符串;第二個參數wait是一個可選參數,如果忽略就假定其為false。如果wait為true,則擊鍵必頇在控制返回到調用程序之前得到處理。 范例:

Sub Main ()

Dim I, X, Msg ' 聲明變量.

X = Shell("Calc.exe", 1) ' 打開系統附件計算器.

For I = 1 To 5 ' 建立計算循環.

SendKeys I & "{+}", True ' 發送鍵盤動作到計算器

Next I ' 添加I的每個數值.

AppActivate "Calculator" ' 從新激活計算器.

SendKeys "%{F4}", True ' Alt+F4 關閉計算器.

End Sub

Sin 函數

格式:Sin (rad)

功能:計算并返回弧度rad的正弦值。

范例:

Sub Main ()

pi = 4 * Atn(1)

46 

68/78页

FOXBOT〄編程手冊

rad = 90 * (pi/180)

x = Sin(rad)

print x

End Sub

Space函數

格式:Space[$] (number )

功能:在print#語句中跳過指定數目的空格。

說明:參數number 表示空格的數量。

范例:

' This sample shows the space function Sub Main

MsgBox "Hello" & Space(20) & "There" End Sub

Sqr 函數

格式:Sqr(num)

功能:計算并返回數值num的平方根。

說明:參數num必頇是大于或等于零的有效數字。

范例:

Sub Form_Click ()

Dim Msg, Number ' Declare variables.

Msg = "Enter a non-negative number."

Number = InputBox(Msg) ' Get user input.

If Number < 0 Then

Msg = "Cannot determine the square root of a negative number."

Else

Msg = "The square root of " & Number & " is "

Msg = Msg & Sqr(Number) & "."

End If

MsgBox Msg ' Display results.

End Sub

47 

69/78页

FOXBOT〄編程手冊

Static語句

格式:Static variable

功能:聲明變量并分配存儲空間。以Static語句聲明的變量其值在程序運行過程中始終保留. 相關主題:Dim, Function, Sub

范例:

' 此例展示了如何用關鍵詞static在程序Joe中保持變量I的值.

' If Dim is used instead of Static then i ' is empty when printed on the second call as well as the first.

Sub Main

For i = 1 to 2

Joe 2

Next i

End Sub

Sub Joe( j as integer

Static i

print i

i = i + 5

print i

End Sub

Stop 語句

格式:Stop

功能:終止程序的執行。

說明:Stop語句可以用在代碼中的任意位置。

范例:

48 

70/78页

FOXBOT〄編程手冊

Sub main ()

Dim x,y,z

For x = 1 to 5

For y = 1 to 5

For z = 1 to 5

Print "Looping" ,z,y,x

Next z

Next y

Stop

Next x

End Sub

Str 函數

格式:Str(numericexpr)

功能:將數字表達式numericexpr的值轉換為字符串類型。 相關主題:Val

范例:

Sub main ()

Dim msg

a = -1

msgBox "Num = " & Str(a)

MsgBox "Abs(Num) =" & Str(Abs(a))

End Sub

StrComp函數

格式:StrComp( nstring1,string2, [compare] )

功能:字符串比較函數。其返回值是variant類型,代表兩個字符串的比較結果。

范例:

Sub Main

Dim MStr1, MStr2, MComp

49 

71/78页

FOXBOT〄編程手冊

MStr1 = "ABCD": MStr2 = "today" ' Define variables.

print MStr1, MStr2

MComp = StrComp(MStr1, MStr2) ' Returns -1.

print MComp

MComp = StrComp(MStr1, MStr2) ' Returns -1.

print MComp

MComp = StrComp(MStr2, MStr1) ' Returns 1.

print MComp

End Sub

String 函數

格式:String ( numeric, charcode )

功能:字符串生成函數。

說明:創建由numeric個單個字符charcode組成的字符串。Charcode代表單個字符,numeric是一個整數值。

相關主題:Space函數

范例:

Sub Main

Dim MString

MString = String(5, "*") ' Returns "*****".

MString = String(5, 42) ' Returns "44444".

MString = String(10, "Today") ' Returns "TTTTTTTTTT".

Print MString

End Sub

Sub 語句

格式:

Sub SubName [(arguments)]

Dim [variable(s)]

[語句塊]

[Exit Function]

End Sub

功能:聲明并定義一個子程序

說明:當需要傳遞參數列表時需遵循以下格式:

([ByVal] variable [As type] [,ByVal] variable [As type] )…))

可選參數ByVal指明變量是按值傳遞參數,而不是按引用傳遞:參見本手冊“ByRef and ByVal”:。可選參數As type指明所使用的數據類型。有效的數據類型有:string,integer,double,long和variant:參見本手冊“數據類型”:。

相關主題: Dim, Function

50 

72/78页

FOXBOT〄編程手冊

范例:

Sub Main

Dim DST As String

DST = "t1"

mkdir DST

mkdir "t2"

End Sub

Tan 函數

格式:Tan(angle)

功能:計算角度angle的正切值.

說明:參數angle必頇是用弧度表示的有效角度 相關主題:Atn, Cos, Sin

范例:

Sub Main ()

Dim Msg, Pi ' 聲明變量.

Pi = 4 * Atn(1) ' 計算Pi.

Msg = "Pi is equal to " & Pi

MsgBox Msg ' 顯示結果.

x = Tan(Pi/4)

MsgBox x & " is the tangent of Pi/4"

End Sub

Time 函數

格式:Time[()]

功能:返回當前系統時間.

相關主題:設置時間使用TIME$語句.

范例:

Sub Main

x = Time(Now)

Print x

End Sub

Timer事件

格式:Timer

Timer事件用來追蹤流逝的時間或者作為停止時鐘顯示在對話里。Timer的值是從午夜開

始的秒數。

相關主題: Hour,Minute, Now, Second

范例:

51 

73/78页

FOXBOT〄編程手冊 Sub Main

Dim TS As Single

Dim TE As Single

Dim TEL As Single

TS = Timer

MsgBox "Starting Timer"

TE = Timer

TT = TE - TS

Print TT

End Sub

Trim, Ltrim,Rtrim函數

格式:[L| R] Trim (String)

功能:Ltrim, Rtrim和Trim函數返回一個刪除了前導空格,后導空格或者同時刪除前后導空格的字符串.

說明:Ltrim, Rtrim和Trim都返回字符串。Ltrim刪除字符串前導空格;Rtrim刪除字符串后導空格;Trim移除字符串前后導空格。

范例:

Sub Main

MyString = " <-Trim-> " ' Initialize string.

TrimString = LTrim(MyString) ' TrimString = "<-Trim-> ".

MsgBox "|" & TrimString & "|"

TrimString = LCase(RTrim(MyString)) ' TrimString = " <-trim->".

MsgBox "|" & TrimString & "|"

TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->".

MsgBox "|" & TrimString & "|"

' Using the Trim function alone achieves the same result.

TrimString = UCase(Trim(MyString)) ' TrimString = "<-TRIM->".

MsgBox "|" & TrimString & "|"

End Sub

Type 語句

格式:

Type 用戶類型 元素名As 類型名

[元素名As 類型名]. . .

End Type

功能:定義一個包含一個或多個元素的用戶自定義類型

一旦用Type語句定義了用戶自定義類型,就可以在程序的任意位置聲明該類型的變量。可使用Dim 或 Static聲明用戶自定義類型變量。行號和行標號不能出現在Type…End Type語句塊中。

52 

74/78页

FOXBOT〄編程手冊

用戶自定義類型常用于數據記錄,因為數據記錄常常由許多不同數據類型相關元素組成,

Enable中數組不能作為用戶自定義類型的元素。 范例:

Type type1

a As Integer

d As Double

s As String

End Type

Type type2

a As String

o As type1

End Type

Type type3

b As Integer

c As type2

End Type

Dim type2a As type2 Dim type2b As type2 Dim type1a As type1 Dim type3a as type3 Sub Form_Click ()

a = 5

type1a.a = 7472

type1a.d = 23.1415

type1a.s = "YES"

type2a.a = "43 - forty three"

type2a.o.s = "Yaba Daba Doo"

type3a.c.o.s = "COS"

type2b.a = "943 - nine hundred and forty three"

type2b.o.s = "Yogi"

MsgBox type1a.a

MsgBox type1a.d

MsgBox type1a.s

MsgBox type2a.a

MsgBox type2a.o.s

MsgBox type2b.a

MsgBox type2b.o.s

MsgBox type3a.c.o.s

MsgBox a

End Sub

Ubound函數

格式:Ubound(arrayname[,dimension])

功能:返回數組指定維數的下標上界。

相關主題:Dim, Global, Lbound和option base

范例:

53 

75/78页

FOXBOT〄編程手冊

Sub Main

Dim a(10) As Double

MsgBox "LBound: " & LBound(a) & " UBound: " & UBound(a)

Dim i As Integer

For i = 1 to 3

a(i) = 2 + i

Next i

Print a(1),a(1),a(2),a(3)

End Sub

UCase 函數

格式:Ucase (String )

功能:將參數字符串String中的所有字母轉換成大寫字母.

范例:

Sub Main

MyString = " <-Trim-> " ' Initialize string.

TrimString = LTrim(MyString) ' TrimString = "<-Trim-> ".

MsgBox "|" & TrimString & "|"

TrimString = LCase(RTrim(MyString)) ' TrimString = " <-trim->".

MsgBox "|" & TrimString & "|"

TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->".

MsgBox "|" & TrimString & "|"

' Using the Trim function alone achieves the same result.

TrimString = UCase(Trim(MyString)) ' TrimString = "<-TRIM->".

MsgBox "|" & TrimString & "|"

End Sub

Val函數

格式:Val(string)

功能:返回有數字組成的字符串string的數字值.

范例:

Sub main

Dim Msg

Dim YourVal As Double

YourVal = Val(InputBox$("Enter a number"))

Msg = "The number you enered is: " & YourVal

MsgBox Msg

End Sub

VarType

格式:VarType(varname)

功能:返回一個標識參數varname的內部存儲方式的數值,參數Varname為variant類型。

變量類型 返回值

Empty 0

54 

76/78页

FOXBOT〄編程手冊

Null 1

Integer 2

Long 3

Single 4

Double 5

Date/Time 7

String 8 相關主題:IsNull, IsNumeric 范例:

If VarType(x) = 5 Then Print "Vartype is Double" 'Display variable type

Weekday 函數

格式:Weekday(date,firstdayof week)

功能:返回日期時間在一周中位序

相關主題:Hour, Second, Minute, Day

范例:

Sub Main

x = Weekday(#5/29/1959#)

Print x

End Sub

While...Wend 語句

格式:

While condition

[語句塊]

Wend

功能:while...Wend語句以while開始流程控制結構。Condition是任意的數值或者是可以轉化

為true或者false的表達式。只有條件為“真”才執行程序語句。

相關主題:Do...Loop語句

范例:

Sub Main

Const Max = 5

Dim A(5) As String

A(1) = "Programmer"

A(2) = "Engineer"

A(3) = "President"

A(4) = "Tech Support"

A(5) = "Sales"

Exchange = True

While Exchange

Exchange = False

55 

77/78页

FOXBOT〄編程手冊

For I = 1 To Max

MsgBox A(I)

Next I

Wend

End sub

Write # 語句

格式:Write #filenumber [,parameterlist ]

說明:向一個順序文件寫入并格式化數據,該文件必頇以output或者append模式打開。以逗號分隔的參數列被寫入到指定文件中。如果沒有指定參數,換行符將被寫入到文件中。 相關主題:Open和Print#語句

范例:

Sub Main ()

Open "TESTFILE" For Output As #1 ' 打開寫入文件.

userData1$ = InputBox("Enter your own text here")

userData2$ = InputBox("Enter more of your own text here")

Write #1, "This is a test of the Write # statement."

Write #1,userData1$, userData2

Close #1

Open "TESTFILE" for Input As #2 ' 打開讀文件.

Do While Not EOF(2)

Line Input #2, FileData ' 讀一行數據.

PRint FileData ' 創建信息.

Loop

Close #2 '關閉所有打開文件.

MsgBox "Testing Print Statement" ' 顯示信息.

Kill "TESTFILE" ' 從盤中移除文件.

End Sub

Year函數

格式:Year(serial# )

功能:返回對應于日期字符串參數serial#的年份值,返回的年份值處于1930~2029之間。如果參數

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA字符串处理 (1)
在VB中用DAO实现数据库编程(1)
VBA字符串处理
vb6.0 判断数组为空
Excel之VBA常用功能应用篇:实现复制文件功能
Excel中VBA编程学习笔记(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服