日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VBScript 程序员参考手册 读书笔记01-07

發(fā)布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VBScript 程序员参考手册 读书笔记01-07 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?第一章 編程快速入門

變量是一斷預留用于儲存數據的計算機內存。內存是臨時的(不像硬盤),內存都有獨一無二的地址。不同類型的變量需要的內存數量不同。

自頂向下程序設計:適合面向任務的腳本中自頂向下的設計比較合適。代碼從頭到尾一行一行執(zhí)行。

事件驅動程序設計:代碼只有在某個特定事件發(fā)生時才會被執(zhí)行。Windows程序/web編程都是基于事件驅動模型寫的。

自頂向下和事件驅動結合程序設計。

編程習慣:不要再對個任務中使用同一個變量。

第二章 VBS是什么?

VBS 是VB的子集。

VBS是解釋性語言,沒有被編譯。編譯意味著代碼(如C++)在交付前編譯為擴展名為.exe的可執(zhí)行文件。

?

?

第三章 數據類型 data type

1. 語言分類:

1.1強類型語言(strongly typed language):要求事先聲明變量,還要聲明數據類型。比如編譯型語言。

1.2弱類型語言 (loosely typed language): 不需要聲明變量的數據類型。比如腳本語言,含vbs。

2.運行流程:

普通文本中編寫代碼à執(zhí)行腳本文件à腳本在運行時引擎(runtime engine)在程序運行時編譯代碼à程序運行。

3.程序員的要求:實現需求,沒有bug,遺留代碼方便別人理解閱讀。

4.VBS中唯一的數據類型:Variant.

但是它有很多子類型:比如String, Date, Boolean等。

5. 兩種方式更改變量的子類型:

???????????????隱式更改(implicit type coercion):隱式更改發(fā)生在被賦值之前。在被賦的值賦到這個變量前,vbs引擎使用本身的邏輯檢查這個新值并確定應該具有的子類型。

???????????????顯式更改:對子類型的精細的控制。可用類型轉換函數(conversion function)來完成。

6. Vbs中VarType()返回值等價的具名常量(namedconstant),比如vbString常量是8

If VarType(variable)=vbString Then? 或者IfVarType(variable)=8 Then?

7.匈牙利表示法(Hungarian notation)的變量前綴,比如(var-variant;str-string; int-integer; lng-long; byt-byte; sng-single; dbl-double;cur-currency; obj-object; boll-bollean)。Var 一般用于不知道放什么類型,或變量的類型會變。

8. Date類型: Var = #5/16/99#?????????? (##)

??String類型:Var =? “str”??????????(“”)

9.Is函數來檢驗是不是特定的數據類型;比如 檢查是不是數字:

???????????????If IsNumeric(IngAge) Then ????????

10. If NOT lsNumberic(lngAge) Then? 等同與

????????If lsNumberic(lngAge) = False Then?

11.隱式轉換:比如 3 & “str”???? ? “3str”????????????(轉換為string,不要用+)

???????????????????????????????“3” + 5 ?8???????? (轉換為數字類型,應該是double)

12. 使用+和&的原則:

?????????????? 12.1 只有對數字進行數字運算時才使用+操作符;

???????????????12.2 堅持用&操作符連接字符串;

???????????????12.3 不要用+操作符連接字符串;

13.數據類型和值一樣:Empty和Null。

???????????????一個變量Variant聲明沒賦值,它就是子類型Empty.

?????????Null表示變量中沒有合適的值或未知值。當一個變量只有在將Null賦給它之后,它的值和子類型才是Null。不能用(If var = Null Then)來驗證是不是Null,因為Null和Null不可比,只能用IsNull(var)函數。

區(qū)別:Empty是隱式的,而Null是顯式的。

處理:空字符串和Null連接在一起,結果就是空字符串。所以對取數據庫值的最好處理方式:

???????????????strName = “”+rxCustomers.Fields(“Name”).value

14.含有Object子類型:含有對象引用的變量。對象有屬性和方法。類通常是組件的一部分。

?????生成object: Set obj =WScript.CreateObject(“Scripting.FileSystemObject”)

??Nothing 是一個特殊的值,只針對Object變量。如果這個變量對象被銷毀或者還沒有被初始化,它就是值為Nothing的變量。

????銷毀對象: Set obj = Nothing

????因為對象的變量耗很大的內存。養(yǎng)成習慣,對象用完就要設為 Nothing.

15.數組: 比如 Dim avar(2,4)?? 三行五列!!!

???????????????動態(tài)的數組: Dim avar()

???????????????????????????????????????????????ReDim Preserve avar(2,0)

???????????????????????????????????????????????ReDim Preserve avar(2,1)

注意: Preserve關鍵字只能改變數組最后一個維度的大小,否則會有一個運行的大小。所以使用二維數組,最好把第一維視為列,第二維視為行來設計你的數組。

數組的遍歷:Ubound(arrName,2) 函數來統(tǒng)計行數,2代表2維數組。再用for循環(huán)遍歷。

清除數組:對于靜態(tài)數組,數組元素的數據會被清除,但元素本身依然存在。但對于動態(tài)數組,Erase語句會徹底釋放占用的內存,數據和元素都會被銷毀。

?????????????????例: ?? Erase arrayName

16. 匈牙利表示法的變量前綴:

var :variant

str :string

int :integer

lng :long

byt :byte

sng : single

dbl : double

cur : currency

obj : object

bln\bool : boolean

其他編碼規(guī)范:

常量:全部大寫或con前綴;

數組:字母a或arr的前綴;

?

第四章 變量與過程

1. 變量不是必須聲明的。比如

???????????????lngFirst = 1

???????????????lngSecond = 2

???????????????lngThird = lngFirst + lgnSecond

這里三個變量都沒有聲明,但都可以用。但是有這個可能,你把lngSecond寫成了lgnSecond,程序默認它是第四個變量,賦值為0。所以lngThird是1。

2. 但是如果要求都是顯式聲明,在所有的代碼前加上Option Explicit 語句,養(yǎng)成習慣

???????????????例: Option Explicit

3. 變量命名規(guī)則:首字符為字母,其他非首字符可以是字母,數字,下劃線。

????????? 必備的技術: 匈牙利命名原則”

4. 函數有返回值,過程沒有返回值。

過程用Sub開始(“subprocedure”的縮寫)。語法:

[Public| private] Sub name ([arg1],[arg2])

[Codeinside the procedure]

EndSub

關鍵字Public | private只有在類內部才使用。但是.vbs文件是個孤島(在Windows腳本宿主文件),其他腳本無法訪問內部的代碼。

命名盡量用動詞-名詞結合,比如:ProcessOrder. 參數可有可無。

?

函數唯一的區(qū)別就是把關鍵字改為Function. 最后一點說明:不能聲明函數返回值的類型。

對函數名也使用匈牙利類型前綴:例如,GetUserName()可以命名為strGetUserName()。

5. 調用過程的兩種方法:

è GetsubOrFun “arg”

è Call GetsubOrFun (“arg”)

沒有call不能用括號,有call一定要用括號。

表4-1 調用過程的合法方式

調用過程的非法方式

GreetUser "Bill"

GreetUser("Bill")

Call GreetUser("Bill")

Call GreetUser "Bill"

?

6.調用函數的三種方式:

à lngSum=AddNumber(10,20)

àCallAddNumber(10,20)

à AddNumber 10,20


表4-2 調用函數的合法方式

調用函數的不合法方式

備 注

lngSum = AddNumbers(10, 20)

lngSum = AddNumbers 10, 20

要獲得函數的返回值,就不能用Call關鍵字,并且一定要將參數放在圓括號中。沒有圓括號是非法的

Call AddNumbers (10, 20)

lngSum = Call AddNumbers (10, 20)

如果不需要接收函數的返回值則可以使用Call關鍵字,但是必須使用圓括號。在接收返回值時用Call關鍵字是非法的

AddNumbers 10, 20

AddNumbers (10, 20)

可以同時忽略Call關鍵字和返回值,但這樣也必須忽略圓括號

過程和函數可以有可選參數(optional argument)。但是您自己用VBScript編寫的過程和函數不能有可選參數。

7.內建的“具名常量”,就象值固定的變量。比如vbYesNo

?????MsgBox(“Hello”,vbYesNo)

8.退出過程或函數,除非在復雜情況下遇到邏輯終止點,否則不推薦使用。

??????????????Exit Sub

???????????????Exit Function

9.一個過程里的過程級變量數量<=127;一個腳本中腳本級變量數量<=127. 。如果您確實有那么多數據,可以考慮將它們組織成類,每一個類可以有多個屬性。

變量的三種作用域:

???????????????9.1腳本級(Script-level):在整個腳本文件的代碼都有效。

???????????????9.2過程級(procedure-level):變量在過程或函數中有效。局部變量。

???????????????9.3類級(class-level):在Class … End Class中定義。類中用private語句聲明的變量就是類級的作用域。

三種語句聲明變量:Dim;Private;Public.

?

Dim

Private

Public

Script-level(三者一樣效果)

yes

Yes

yes

Procedure-level

yes

?

?

Class-level

Yes = public

Yes

yes

?。這里有一個要時刻記住的重要原則:必須要盡可能地限制變量的生存期和作用域。因為變量會消耗內存,;限制作用域可以減少程序的錯誤,并提高代碼的可理解性和可維護性。只要遵守模塊化的良好原則,設計優(yōu)良的過程和函數自然就會處理好作用域和生存期問題—— 無需任何額外的努力。

10.函數傳參: 傳址(by reference) 和 傳值(by value), 關鍵字是ByRef 和ByVal,而ByRef是默認的。大部分時候(基本上可以說是幾乎所有時候),都會用ByVal處理過程和函數的參數。但是在您確實需要ByRef之前最好還是堅持使用ByVal。

???????????????傳址是永久地修改變量的值;傳值只在過程中的代碼里臨時修改這個參數。

比如: Dim lngA, lngB

???????????????lngA = 1

???????????????lngB = 1

ByRefByVal lngA, lngB

Sub? ByRefByVal(ByRef lngA, ByVal lngB)

lngA = lngA + 1

lngB = lngB + 1

End Sub

結果是 lngA=2 ; lngB =1; 因為過程中的改變不影響外面的lngB變量沒有修改。

11. 兩種常量:文字常量 和具名常量(關鍵字 Const)

?????????????? 比如: Const GREETING = “Hello”

這里 “Hello”是文字常量,GREETING是具名常量,使用效果是一樣的。一般具名常量的命名全是大寫字母。,常量名稱中的不同單詞是以下劃線(_)分割的,跟變量一樣,具名常量也有作用域。但不能用Dim語句聲明常量,而是用Private和Public加上Const語句。

系統(tǒng)自帶的內建常量:很多以vb前綴來識別。比如vbExclamation

MsgBox “Hello”,vbExclamation

?

第五章 流程控制 control of flow

大部分人都很難理解超過三重或四重的嵌套.

分支:

If… ElseIf…Else…EndIf

Selectcase…case …case else…End Select

循環(huán):

For… Next\For Each ..Next

Do…Loop While (或者while在前):只有在While語句中的表達式為True時循環(huán)才會再次執(zhí)行

Do…Loop Until? (或者Until在前): 反復執(zhí)行一段語句,直到(until)某一條件為True。

盡管While和Until語句有些不同,但是它們的功能是一樣的。

可以用Exit Do隨時跳出Do循環(huán)。

While…Wend有點過時,但是能讀懂別人代碼中的用法。While…Wend最主要的限制就是它沒有等價于Exit For或Exit Do的語句,這意味著不能強行跳出循環(huán)。

第六章 錯誤處理 exception handling

看函數文檔有哪些可能的錯誤并防止;多測試;搜索答案;

1. 三種錯誤:

語法錯誤(Syntax error):編譯錯誤,結果終止腳本的執(zhí)行;比如缺關鍵字,無法識別的表達式;

運行錯誤(Runtime error): 運行時錯誤,最常見。引擎認為語法正確,但運行失敗。比如 Option Explicit 引起有關的錯誤, 不是編譯錯誤是運行錯誤。

邏輯錯誤(Logic error): 隱藏的錯誤,運行每問題,但結果不對。

2. 錯誤處理:向用戶顯式錯誤,記入到文件里,郵件或其他方式通知等;

3.錯誤對象: Err 對象:有屬性 Number(錯誤代碼行數),Source(錯誤信息),HelpFile, HelpContext和方法Clear(清楚所有屬性), Raise(生成自定義的運行時錯誤);

4.自己處理異常:

捕獲錯誤的三個步驟:在可能錯誤代碼前加On ErrorResume Next;在錯誤代碼后立即檢查Err.Number的值,If Err.Number>0 Then 處理代碼;最后重啟錯誤機制On Error Go To0。

4.1忽略錯誤語句,把所有錯誤忽略:

OnError Resume Next

重新啟動錯誤處理機制:

OnError Go To 0

所以要處理異常,就在這兩句話之間加上你要處理的代碼。一般用 If Err.Number <>0 來處理。

比如可以用WScript.Quit命令來終止腳本且清空資源。可以多用一些OnError Go To 0

來防止一些分支沒有啟動這個機制。

4.2自定義錯誤:比如

???????????????Err.Raise vbObjectError+10000, “source:MyScript.MyFunction”, “errorinformation”

Err.Raise()方法,第一個參數在錯誤代碼前加上vbObjectError,避免和微軟官方錯誤代碼沖突。

???????????????????????????????第二個參數是錯誤的來源。

???????????????????????????????第三個參數是錯誤描述。

?

?

?

第九章 正則表達式

強大的字符匹配和替換功能。VBS并不支持正則表達式常量(如 /apattern/),而是將文本字符串賦給RegExp對象的Pattern屬性。

1.1步驟 --示例: Dim re, s

???????新建一個正則表達式對象: Set re = New RegExp

??????設置對象的關鍵屬性: re.Pattern = “Frank”

???????要搜索的字符串:? s = “Frank is anice man”

??????查找和替換功能: re.Replace(s,”He”)

2.RegExp對象是提供正則表達式的對象。

屬性

Global? (值為True, False)

默認值為False.

是Ture才會對整個字符串進行查找,否則你最多只能找到一個結果。

e.g. re.Gloal = ture

IgnoreCase (值為True, False)

默認值為False. 大小寫敏感。

Pattern

正則表達式 e.g. re.Pattern = “Frank”

方法

Execute (值為需要搜索的字符串)

將正則表達式應用到字符串,并返回Matches集合。檢驗一個空集會if re.Execute(s).count=0 。e.g.

Set re = new RegExp

Re.Pattern = “\w”

s = “string”

Set colMatches = re.Execute(s)

?

For Each match In colMatches

Msgbox match.value

Next

Replace(值為需要搜索的字符串,代替的字符串)

替換在正則表達式搜索中找到的文本。e.g.

Set re = new RegExp

Re.Pattern = “\w”

re.Replace(string, str)

Test(值為需要搜索的字符串)

判斷是否存在正則表達式搜索中找到的文本結果。返回布爾值。e.g.

Set re = new RegExp

Re.Pattern = “\w”

?

If Then re.Test(s) Then

Matches集合和Match對象

Execute方法返回這個Matches集合(Match對象的集合),屬性是只讀的。

SetcolMatches = re.Execute(s)

屬性一:返回集合的元素數量: MsgBox colMatches.count

屬性二: Item根據制定的鍵返回元素: MsgBoxcolMatches.item(0)

?

一個正則表達式執(zhí)行,會產生0個或多個Match對象。每個對象有三個只讀的屬性:搜索找到的字符串;字符串長度;找到該匹配位置的索引。

ForEach objMatch in colMatches

?

Next

屬性一:搜索找到的字符串objMatch.FirstIndex

屬性二:字符串長度 objMatch.Length

屬性三:找到該匹配位置的索引objMatch.Value

?

3.正則表達式字符: 大寫的字符和小寫的字符作用相反:

???????????????e.g. ?????? \b 匹配一個單詞邊界,

???????????????????????????????\B匹配一個非單詞邊界。

非數字: re.Pattern = “[\D]”

三種特殊字符用于錨定模式:輸入開頭(在[]外使用^),輸入的結尾($)或是單詞邊界(\b).

縮短模式的方法就是重復數: e.g. ???? re.Pattern =”\d{3}”?? 三個數字。

指定匹配范圍或次數:

一次以上: re.Pattern = “\d+”

0次或多次:re.Pattern = “\d*”

0次或者1次:re.Pattern = “\d?”

4.一些例子:

匹配空白: “^[ \t]*$”

?

?

?

Sometips:

1.????

vbCrLf ?回車/換行組合符。

vbCr??????? 回車符。

vbLf ?換行符。

所以不同的平臺對于“換行符”都有一種約定
windows平臺是vbCrLf???????????????????????? UNIX/Linux系統(tǒng)是vbLf??????????????????????? 蘋果系統(tǒng)是vbCr

“windows平臺是vbCrLf”,這并不是說Windows下的程序遇到vbCr或者vbLf就一定無法正常顯示。有的程序不能正常顯示,比如記事本.

2.???All characters:

' all the upper case character

For i = 65 To 90

??????? x = "" &x &chr(i)

Next

Msgbox x

?

' all the lower case character

For j = 97 To 121

??????? y = ""& y & chr(j)

Next

msgbox y???????????????????????????????

?第七章:腳本運行時對象:

存在于單獨的組件中,和VBS解釋器是分開的。

創(chuàng)建與銷毀對象:

Set objDict = CreateObject(“Scripting.Dictionary”)

Set objDict = Nothing

字典對象:

三種不同的添加方法以及exsit方法:

Set objDict = CreateObject(“Scripting.Dictionary”)

objDict.Add “1234”, “Cat”

objDict.Item(“1234”)= “Cat”

objDict(“1234”)= “Cat”

If objDict.Exisit(“1234”) Then

FileSystemObject庫:文件和文件夾的操作

FSO對象模型:

·??????FileSystemObject

·??????Drive

·??????Drives

·??????File

·??????Files

·??????Folder

·??????Floders

·??????TextStream

可以做這樣的操作

總結

以上是生活随笔為你收集整理的VBScript 程序员参考手册 读书笔记01-07的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日批视频网站 | 天天天天天干 | 欧美极品jizzhd欧美 | 性高潮在线观看 | 日韩视频在线观看一区 | 国产一区影院 | 精品乱人伦一区二区三区 | 欧美三级一区 | 91久久国语露脸精品国产高跟 | av免费在线观看网站 | 日本精品久久久久久 | 国产肉体xxxx裸体784大胆 | 中国一级免费毛片 | 亚洲精品人 | 久久午夜夜伦鲁鲁一区二区 | 精品少妇无码av无码专区 | 娇小6一8小毛片 | 久久嫩草精品久久久久 | 亚洲视频网址 | 欧美亚洲一二三区 | 成人午夜影片 | 日日干天天爽 | 日本成人动漫在线观看 | 国产一区自拍视频 | 成人a毛片久久免费播放 | 男人天堂久久久 | 波多野结衣一区二区三区高清av | 免费av在线播放网址 | 天天天天天干 | 欧美激情久久久久久 | 日韩av资源 | 男人操女人免费网站 | 亚洲一二三区在线 | 色二区| 日韩高清影视在线观看 | 日日摸夜夜添夜夜添高潮喷水 | 亚洲精品视频在线观看免费视频 | 麻豆久久久| 国产免费激情 | 西野翔夫の目の前で犯在线 | 国产午夜精品理论片 | 欧美爽妇 | 亚洲欧洲色图 | 国产jk精品白丝av在线观看 | 精品国产一区二区三区在线 | 插插久久 | 少妇性xxxxxxxxx色武功 | 性做久久 | 一区二区三区在线观看免费 | www黄色网 | 欧美寡妇性猛交ⅹxxx | 国精品无码一区二区三区 | 久久久999国产精品 天堂av中文在线 | 国产丝袜精品视频 | 中文字幕视频二区 | av一二三四| 欧美一二区 | 男女视频久久 | 欧美成人hd | 香蕉视频免费 | 亚洲精品乱码久久久久久久久久久久 | 97超碰免费观看 | 国产精久久 | 午夜激情四射 | 人体裸体bbbbb欣赏 | 天天高潮夜夜爽 | 成人3d动漫一区二区三区91 | 国产精品美女久久久久久久 | 久久疯狂做爰流白浆xx | 尤物自拍 | 国产区91 | 欧美黑人一区二区 | 国产精品对白刺激久久久 | 富婆如狼似虎找黑人老外 | 123成人网| 日本全黄裸体片 | 精品一区二区视频 | 欧美日韩视频网站 | 日韩精品黄| 久久久久性 | 一区二区三区精彩视频 | 国产精品电影院 | 国产15页 | 国内精品一区二区 | 少妇又色又紧又大爽又刺激 | 香蕉久久夜色精品升级完成 | 一级黄色片在线观看 | 麻豆乱码国产一区二区三区 | 国产精品久久久久精 | 亚洲图片欧美色图 | 成熟丰满熟妇高潮xxxxx视频 | 91亚色在线观看 | 337p日本欧洲亚洲大胆张筱雨 | 伊人激情 | 色小姐com | 美女超碰在线 | 久草小说 | 国产激情视频一区二区 | av无码精品一区二区三区 |