VB程式設計中的一些經驗 (轉)
VB中的一些
1. 假設VB中有如下的變數宣告:
dim s1, s2 as string
則s1是一個variant型變數,而s2是一個string型變數
如果想要宣告兩個string變數s1和s2
應該用:
dim s1 as string, s2 as string
2. VB中的是自動回收的,類似
在一個過程中
sub Foo()
dim obj as new
.... 'do something with obj
end sub
過程結束的時候沒有必要 set obj = nothing
因為當離開該過程的時候,區域性變數obj消失,因此對Object物件例項的引用也就消失(除非在過程內部有其他的全域性變數引用了該物件的例項),所以物件例項會自動釋放
但是對於模組級的物件變數,new了一個例項後用完了必須set obj = nothing來釋放該例項
3. 對物件變數賦值應該用 set obj = AnOtherObj 這種方式,相當於讓obj指向AnOtherObj所指向的物件。VB中的物件變數實質上是一個指向物件例項的指標,這點和java,pascal相同,和C++中不同
4. VB中字串的內部格式是Unicode,它可以自動轉化為ANSI字元(單位元組字元)或者 CS 字元(雙位元組字元)。例如
dim s1 as string, s2 as string
s1 = "中文"
s2 = left(s1, 1)
則得到的實際上是 s2 = "中"
因為VB會自動將s1內部unicode的"中"字單作一個DBCS字元取出來傳給s2
因此處理雙位元組字元的時候特別要注意,很容易產生陣列錯誤
VB中的常用字串處理,例如Asc, Left, Mid...都會自動判斷處理的字串中的每個字元是單位元組還是雙位元組(因為字串在內部以Unicode儲存,所以這一點很容易做到),然後自動轉化為ANSI字元或DBCS字元。
5. 字串的比較應該是用 strCmp 函式,而不是簡單的用 = 號
StrComp(string1, string2[, compare])
其中引數compare的取值含義如下:
常量 值 含義
vbUseCompareOption -1 根據Option Compare 語句的設定進行字串比較
vbBinaryCompare 0 進行二進位制比較,也就是將string1和string2中的unicode字元看作陣列進行字典序比較
vbTextCompare 1 進行文字比較
vbDatabaseCompare 2 這個選項只適用於 Access,根據的設定進行比較
對於英文字串進行 vbTextCompare 比較時,不區分字母大小寫,例如: "a" 與 "A" 相等;
對於中文或其他雙位元組字串進行 vbTextCompare 比較時,不區分全形字元和半形字元,例如 "A", "A", "a", "a" 都相等;
6. VB中字串處理的函式有三種版本:
(1) ANSI和DBCS版本,一般的字串函式(例如Mid(), Left(), ... )都是該版本,該版本的函式可以自動識別ANSI字元和DBCS字元,而且無論是ANSI字元還是DBCS字元都當作一個字元處理(雖然一個DBCS字元是兩個位元組,但還是當作一個字元處理)
(2) 二進位制版本,這個版本的函式是在第一類函式的名稱後面加上B, 例如 MidB(), LeftB()……;這個版本的函式將字串當作位元組陣列處理,例如 s = "abc", k = LenB(s) , 則 k=6,因為字串在VB內部以unicode儲存,而一個unicode字元佔兩個位元組,所以s實際上佔用了2*3=6個位元組的空間,於是LenB(s)返回6
(3) Unicode版本,這個版本的函式是在第一類函式名稱後面加上W,例如AscW, ChrW;這個版本的函式將字串當作unicode處理。
函式 功能描述
Asc Returns the ANSI or DBCS character code for the first character of a string.
AscB Returns the value of the first byte in the given string containing binary data.
AscW Returns the Unicode character code for the first character of a string.
Chr Returns a string containing a specific ANSI or DBCS character code.
ChrB Returns a binary string containing a specific byte.
ChrW Returns a string containing a specific Unicode character code.
Input Returns a specified number of ANSI or DBCS characters from a file.
InputB Returns a specified number of bytes from a file.
InStr Returns the first occurrence of one string within another.
InStrB Returns the first occurrence of a byte in a binary string.
Left,Right Returns a specified number of characters from the right or left ss of a string.
LeftB, RightB Returns a specified number of bytes from the left or right side of a binary string.
Len Returns the length of the string in number of characters.
LenB Returns the length of the string in number of bytes.
Mid Returns a specified number of characters from a string.
MidB Returns the specified number of bytes from a binary string.
7. VB程式碼中的以下識別符號不能含有雙位元組字元:
Public procedure names 公共過程名稱
Public variables 公共變數
Public constants 公共常量
Project name (as specified in the Project Properties dialog box) 工程名稱(在工程屬性對話方塊中的名字) [PS: VB中文版中的工程名稱可以是中文,比較奇怪的說]
Class names (Name property of a class module, a user control, a property page, or a user document) 類名(類模組、模組,屬性頁,使用者文件的name屬性)
換句話說,其他的識別符號都可以用中文,例如:
Private Sub cmdTest_Click()
Dim 中文變數 As String
中文變數 = "你好! hello!"
MsgBox 中文變數
End Sub
這樣的程式碼也是合法的 :-)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991976/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VB程式介面設計經驗點滴 (轉)
- VB程式設計經驗點滴程式設計
- VB程式設計的一些心得 (轉)程式設計
- Excel 的VB程式設計 (轉)Excel程式設計
- VB.NET中的物件導向程式設計特徵 (轉)物件程式設計特徵
- VB的API程式設計精粹(1) (轉)API程式設計
- VB的API程式設計精粹(二) (轉)API程式設計
- 程式設計中的一些感悟(收藏) (轉)程式設計
- VB程式設計師眼中的C# (轉)程式設計師C#
- asp程式設計經驗談:ASP檔案中的安全問題(轉)程式設計
- Delphi實用程式設計經驗二 (轉)程式設計
- 一個老程式設計師的小小經驗(轉)程式設計師
- VB與VC混合程式設計中處理訊息的方法 (轉)程式設計
- Go 併發程式設計中的經驗教訓Go程式設計
- VB程式設計師眼中的C# 2 (轉)程式設計師C#
- VB程式設計師眼中的C# 4 (轉)程式設計師C#
- VB程式設計師眼中的C# 6 (轉)程式設計師C#
- VB程式設計師眼中的C# 3 (轉)程式設計師C#
- VB程式設計師眼中的C# 5 (轉)程式設計師C#
- VB程式設計師眼中的C# 7 (轉)程式設計師C#
- VB程式設計師眼中的C# 8 (轉)程式設計師C#
- VB程式設計師眼中的C# 9 (轉)程式設計師C#
- 程式設計師的管理經驗程式設計師
- 高階程式設計師考試經驗 (轉)程式設計師
- Delphi實用程式設計經驗二則 (轉)程式設計
- 程式設計師的經驗之談-生活與工作(轉)程式設計師
- VB程式設計師眼中的C# 10(end) (轉)程式設計師C#
- 談談VB的資料庫程式設計方式 (轉)資料庫程式設計
- VB資料庫程式設計的幾點心得 (轉)資料庫程式設計
- 程式設計師面試經驗程式設計師面試
- plsql 程式設計經驗---引用SQL程式設計
- Linux核心程式設計實戰經驗談(轉)Linux程式設計
- Oracle程式設計經驗及維護點滴(轉)Oracle程式設計
- 程式設計中的一些感悟程式設計
- 用VB5.0設計E-Mail程式 (轉)AI
- 程式設計師:增加程式設計經驗的3種途徑程式設計師
- VB程式設計師的FTP程式設計指南1.3-列出、改變目錄 (轉)程式設計師FTP
- 12年經驗老程式設計師5次轉型程式設計師