程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> vb變量、常數和數據類型及過程概述(六)

vb變量、常數和數據類型及過程概述(六)

編輯:VB6

Variant 變量中存儲的 Numeric 值
在 Variant 變量中存儲整個數時,Visual Basic 使用最緊湊的表示。例如,若是存儲不帶小數點的微小的數值,Variant 對該值使用 Integer 表示。如果此後賦予一個較大的數,則 Visual Basic將使用 Long 值,如果這個數非常大或者有小數部分,則 Visual Basic 將使用 Double 值。
有時想對一個數使用特定表示。例如,為了在以後的計算中避免捨入誤差,可能希望 Variant 變量將數值作為 Currency 存儲起來。Visual Basic 提供了幾種轉換函數,可以用它們將值轉換成指定的類型(參閱本章前面的“轉換數據類型”)。例如,用 CCur 函數可將值轉換成 Currency 類型:
PayPerWeek = CCur (hours * hourlyPay)
如果 Variant 變量不含數或者不含可以解釋為數的內容,則對 Variant 變量執行數學運算或函數計算就會出錯。例如,不能對 'U2' 這個值進行任何算術運算,盡管它包含一個數值字符 '2',但整個值並非合法的數。同樣不能對值 1040EZ 進行任何計算,但是,可以對 +10 或 -1.7E6 進行計算,因為它們是有效的數。因此經常需要判定 Variant 變量是否包含可以當作數使用的值。IsNumeric 函數可以完成這樣的任務:
Do
anyNumber = InputBox ("Enter a number")
Loop Until IsNumeric (anyNumber)
MsgBox "The square root is: " & Sqr (anyNumber)
當 Visual Basic 將一個非數值的表示(如包含一個數的字符串)轉換成數值時,它會使用地區設置(在 Windows 的“控制面板”中規定)來解釋千位分隔符、小數點符號和貨幣符號。
於是,如果 Windows 的“控制面板”中的國家/地區設置值被設置成美國、加拿大或澳大利亞,則這兩個語句將返回 True: IsNumeric ("$100")
IsNumeric ("1,560.50")
而下面兩個語句則返回 false:
IsNumeric ("DM100")
IsNumeric ("1,560,50")
但是,如果在 Windows 的“控制面板”中的國家/地區設置值被設置成德國,則情況正好相反:前兩個語句返回 false,而後兩個語句返回 true。
如果把包含數的 Variant 賦給字符串變量或屬性,Visual Basic 自動把數的內部表示轉換成字符串。如果想顯式地將數轉換成字符串,可以用 CStr 函數。還可以用 Format 函數將數轉換成字符串,字符串包含某種格式,如貨幣符、千位分隔符和小數點符號。Format 函數按照 Windows“控制面板”中的“地區設置”對話框自動使用相應的符號。
詳細信息 請參閱《Visual Basic 6.0語言參考手冊》中的 "Format 函數" 以及關於轉換函數的主題。關於編寫分布在國外市場的應用程序的更詳細信息,請參閱第十六章“國際化”。

Variant 變量中存儲的字符串
一般說來,在 Variant 變量中存儲和使用字符串不會出什麼問題。但是如前所述,有時在使用兩個 Variant 值時," + " 運算符的結果可能很含糊。如果兩個 Variant 變量都包含數,則 " + " 運算符執行加法運算。如果兩個Variant 變量都包含字符串,則 " + " 運算符執行字符串連接。但是,如果一個值代表數,而另一個值代表字符串,則情況就很復雜了。Visual Basic 首先試圖把字符串變成數。如果轉換成功,那麼 " + " 運算符把兩者加在一起;如果不成功,則產生一個“類型不匹配”錯誤。
為了確保執行的動作為字符串連接,不管變量中的表示如何,都用 & 運算符。例如,以下代碼:
Sub Form_Click ()
Dim X , Y
X = "6"
Y = "7"
Print X + Y,X & Y
X = 6
Print X + Y,X & Y
End Sub
在窗體上產生如下結果:
67 67
13 67 
注意 Visual Basic 在內部用 Unicode 存儲字符串。關於 Unicode 的更詳細的信息,請參閱第十六章“國際化"。

Variant 變量中存儲的 Date/Time 值
Variant 變量還可以包含 Date/Time 值。有幾個函數返回 Date/Time 值。
例如,DateSerial 返回該年所剩的天數。
Private Sub Form_Click ()
Dim rightnow , daysleft , hoursleft , minutesleft
rightnow = Now 'Now 返回當前的 Date 和 Time。
daysleft = Int(DateSerial(Year(rightnow) _
+ 1, 1, 1) - rightnow)
hoursleft = 24 - Hour (rightnow)
minutesleft = 60 - Minute (rightnow)
Print daysleft & " days left in the year."
Print hoursleft & " hours left in the day."
Print minutesleft & " minutes left in the hour."
End Sub
還可以對 Date/Time 值進行運算。通過加減一個整數來增加或減少天數;通過加減一個分數來增加或減少時間。所以,加 20 就是加 20 天,而減掉 1/24 就是減去一小時。
存儲在 Variant 變量中的 Date 值的有效范圍從公元 0100 年 1 月 1 日到公元 9999 年12月31日。計算 Date 時不考慮 Gregorian 歷法采用之前的日期。所以如果計算 Gregorian 歷法被采用那年(在英國及其殖民地為1752 年;其它國家/地區則或早一些或晚一些)之前的日期,結果可能會不正確。
在代碼中可以采用 Date/Time 文字,只要用一對 " # " 號將它們括起來,如同對字符串用一對雙引號 ( "" ) 括起來一樣。例如,可以將包含 Date/Time值的 Variant 和一串表示 Date 的文字作比較:
If SomeDate > #3/6/93# Then
下面的例子將包含 Date/Time 值的 Variant 變量和一串表示 Date 和 Time的文字相比較:
If SomeDate > #3/6/93 1:20pm# Then
如果 Date/Time 值不包括 Time,則 Visual Basic 自動將該值的 Time部分設定為午夜(一天的開始)。如果 Date/Time 值不包括 Date,則 Visual Basic自動將該值的 Date 部分設定為公元 1899 年 12 月 30 日。
Visual Basic 接受許多種文字的 Date 和 Time 格式。下面的 Date/Time 值全部有效:
SomeDate = #3-6-93 13:20#
SomeDate = #March 27 , 1993 1:20am#
SomeDate = #Apr-2-93#
SomeDate = #4 April 1993#
詳細信息 有關用國際格式處理 Date 的信息,請參閱第十六章“國際化”。用 IsNumeric 函數可測試一個 Variant 變量是否包含一個值,這個值可以看作有效的數值,同樣,用 IsDate 函數可測試一個 Variant 變量是否包含一個值,這個值可以看作有效的 Date/Time 值。
然後可用 CDate 函數將該值轉換成 Date/Time值。例如,以下代碼用 IsDate 測試文本框的 Text 屬性。如果屬性包含被看作有效 Date 的文本,則 Visual Basic 將此文本轉換成 Date 並計算到年底還有幾天。
Dim SomeDate , daysleft
If IsDate (Text1.Text) Then
SomeDate = CDate (Text1.Text)
daysleft = DateSerial(Year(SomeDate) + _
1, 1, 1) - SomeDate
Text2.Text = daysleft & " days left in the year."
Else
MsgBox Text1.Text & " is not a valid date."
End If
詳細信息 關於各種 Date 和 Time 函數的信息,請參閱《Visual Basic 6.0語言參考手冊》中的“Date 函數”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved