工控隨筆_19_西門子_WinCC的VBS指令碼_08_常量和流程控制_01
在程式設計的過程中,有時候我們會使用一些固定的值,例如圓周率,或者某個人的生日,或者家庭住址等等,
這些資訊對於一個物件來說一旦確定就不會改變,因此我們在程式設計的時候也不希望這些資訊會改變,在VBS裡面
也提供了和其他一些語言中一樣的機制: 常量。
常量大體有兩種型別: 字面值常量 和 具名常量。
一、常量
Option Explicit ' vbs 常量 'vbs有兩種型別的常量: 字面值常量 和 具名常量 '字面值常量 '字面值常量, 就如字面意思一樣,其值就和字面意思表達的一樣 DimstrAddress '下面語句的 中華人民共和國上海市 就是字面值常量 strAddress = "中華人民共和國上海市" Dim nYear '下面語句的 2000 就是字面值常量 nYear = 2000 '具名常量 '1、具名常量,其實質就是其值不能修改的變數, 這個變數一旦初始化後 ' 其儲存的內容不能被改變, '2、具名常量通過關鍵字 const 指定 Const Pi = 3.1415926 '具名常量初始化後不能在賦值 Pi= 10 MsgBox Pi
如上程式碼,具名常量初始化後不能再進行賦值,如果賦值的話就會報錯。如下圖所示:
這個地方需要注意。
Option Explicit ' vbs 常量 'vbs有兩種型別的常量: 字面值常量 和 具名常量 '字面值常量 '字面值常量, 就如字面意思一樣,其值就和字面意思表達的一樣 Dim strAddress '下面語句的 中華人民共和國上海市 就是字面值常量 strAddress = "中華人民共和國上海市" Dim nYear '下面語句的 2000 就是字面值常量 nYear = 2000 '具名常量 '1、具名常量,其實質就是其值不能修改的變數, 這個變數一旦初始化後 ' 其儲存的內容不能被改變,'2、具名常量通過關鍵字 const 指定 Const Pi = 3.1415926 '具名常量初始化後不能在賦值 'Pi= 10 MsgBox Pi 'vbs的內建具名常量 '在vbs中內建了部分具名常量,這些常量方便使用vbs '典型的具名常量就是 msgbox的具名常量,通過不同的具名常量顯示不同的按鈕形式 '1、僅顯示OK、確定按鈕 MsgBox Pi,vbOKOnly '2、顯示yes、no按鈕 MsgBox Pi,vbYesNo '3、顯示 i 圖示 MsgBox Pi,vbYesNo + vbInformation '對於vbs內建的具名常量,建議可以查手冊,這裡再說幾個常用的,其他不多說 ' vbNewLine 這個是表示再起一行的意思 ' vbcrlf 這個與上面的vbnewline是一個意思 MsgBox Pi & vbNewLine & "新行" & vbCrLf & "新的第二行"
二、流程控制
流程控制是程式語言最終要的概念之一,需要注意。
Option Explicit Rem 流程控制 '流程控制是程式語言中重要的概念,通過流程控制可以實現複雜的功能控制 '流程控制主要有: 分支、迴圈兩種 ' 分支 '1、分支主要有IF語句 '2、select case 語句 'if語句 Dim strPrompt Dim nSelect strPrompt = vbCrLf & "1: 選擇Yes說哈哈" & vbCrLf & _ "2: 選擇No說嘻嘻" & vbCrLf & "3: 選擇取消,不說話" nSelect = MsgBox("請選擇不同的按鈕,然後實現不同的功能" & strPrompt, vbYesNoCancel) If nSelect = vbyes Then MsgBox "選擇Yes說哈哈" ElseIf nSelect = vbno Then MsgBox "選擇No說嘻嘻" Else MsgBox "選擇取消,不說話" End If '這個地方需要注意select case語句的執行與其他語言的不一致的地方 Select Case nSelect Case vbyes MsgBox "選擇Yes哈哈" Case vbno MsgBox "選擇No說嘻嘻" Case vbcancel MsgBox "選擇取消,不說話" Case Else MsgBox "不正確的選擇" End Select '迴圈 '迴圈共有四種形式 '1、 for..... next '2、 do....loop、 '3、 while....wend 'for 迴圈 'for 迴圈有兩種形式 '1、for...next '2、for each .....next 'for...next 'for....next迴圈主要用於迴圈次數明確的迴圈應用,例如列印斐波那契數列 '的前多少項 Dim nStart Dim nSecond Dim nLoop Dim strMsg Dim nTemp '斐波那契數列的開始兩項 nStart = 1 nSecond = 1 strMsg = nStart & vbNewLine & nSecond '計算斐波那契數列的第3-30項 For nLoop = 2 To 30 nTemp = nSecond nSecond = nSecond + nStart nStart = nTemp strMsg = strMsg & vbNewLine & nSecond Next MsgBox strMsg 'for each.....next迴圈 'for each....next迴圈是用來遍歷集合中所有元素的一種特定的迴圈結構 '通過這個迴圈來實現對迴圈次數不確定的情況進行遍歷 '使用for each....next迴圈需要使用關鍵字in, in表示在集合中訪問元素 '同樣需要使用一個迴圈控制變數,在迴圈中這個迴圈變數代表的就是集合中的元素 '但是這個變數在使用完畢之後,迴圈變數就 objLoop = empty '如果要再使用必須重新賦值 Dim objFSO Dim objFolder Dim objLoop Dim strFileName Set objFso=CreateObject("Scripting.FileSystemObject") Set objFolder= objFSO.GetFolder("D:\01_vbs") For Each objLoop In objFolder.Files strFileName =strFileName & objLoop.Name & vbCrLf 'MsgBox "我是迴圈變數,我的值為:" & objLoop Next MsgBox strFileName '下面的語句檢測objLoop變數在迴圈結束後的值 If IsEmpty(objLoop) Then MsgBox "已經設定為empty" ElseIf IsNull(objLoop) then MsgBox "已經設定為空" Else MsgBox "未知結果" End If 'for each....next 迴圈還可以用來遍歷陣列 '注意新的指令碼直譯器對於陣列維數的定義,這裡5表示下標最大為5,但是開始 '是從0,所以有6個元素 Dim nArrayName(5) nArrayName(0) = 1 nArrayName(1) = 2 nArrayName(2) = 3 nArrayName(3) = 4 nArrayName(4) = 5 nArrayName(5) = 6 For Each nLoop In nArrayName MsgBox nLoop Next MsgBox "遍歷後,nLoop的值為:" & nLoop
在使用For Each...next 語句的時候,要注意迴圈變數的值,在迴圈結束後已經自動的被設定
為Empty,如果這個時候訪問的話必須再次賦值,否則就會出錯,如下圖所示:
迴圈變數在迴圈結束後被設定為 Empty。
三、Tips
1、分支結構不要巢狀太深
2、迴圈結構知道次數的一半用For語句
3、陣列、集合遍歷可以使用For each...next語句。
--------------------------------------------------------------分割線---------------------------------------------------------------
1、文章均為個人原創,歡迎轉載,轉載請保留出處:https://www.cnblogs.com/volcanol/
2、獲取工控PLC、變頻器、HMI、計算機、Windows、Linux、嵌入式資料點選:獲取資料
3、如果您覺得文章對您有幫助可轉至頁面上半部分打賞,或移步:打賞
4、或者在頁面右下角點推薦喲!!!
--------------------------------------------------------------分割線---------------------------------------------------------------